Commit 03a58d0d authored by Philip Rinn's avatar Philip Rinn

New upstream version 1.2.2

parent 512f95cb
...@@ -17,3 +17,4 @@ qrc_*.cpp ...@@ -17,3 +17,4 @@ qrc_*.cpp
ui_*.h ui_*.h
localization/*.qm localization/*.qm
build/ build/
.idea
platform: linux | osx platform: linux | osx
build: build:
- qmake - qmake
- make - make
analyzers: analyzers:
- cpplint: true - cpplint: true
......
...@@ -56,7 +56,7 @@ script: ...@@ -56,7 +56,7 @@ script:
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/FAQ\.md/https:\/\/qtpass.org\/docs\/md_FAQ.html/' < README.md > README.faq; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/FAQ\.md/https:\/\/qtpass.org\/docs\/md_FAQ.html/' < README.md > README.faq; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/CONTRIBUTING\.md/https:\/\/qtpass.org\/docs\/md_CONTRIBUTING.html/' < README.faq > README.contrib; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/CONTRIBUTING\.md/https:\/\/qtpass.org\/docs\/md_CONTRIBUTING.html/' < README.faq > README.contrib; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/\[\!.*//' < README.contrib > README.clean; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/\[\!.*//' < README.contrib > README.clean; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then pandoc --standalone --from=markdown_github --to=rtf --output=README.rtf README.clean; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then pandoc --standalone --from=gfm --to=rtf --output=README.rtf README.clean; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then appdmg appdmg.json qtpass-$(grep ^VERSION qtpass.pri | cut -d " " -f 6).dmg; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then appdmg appdmg.json qtpass-$(grep ^VERSION qtpass.pri | cut -d " " -f 6).dmg; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export VERSION=$(grep ^VERSION qtpass.pri | cut -d " " -f 6); fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export VERSION=$(grep ^VERSION qtpass.pri | cut -d " " -f 6); fi
notifications: notifications:
......
...@@ -2,7 +2,62 @@ ...@@ -2,7 +2,62 @@
## [Unreleased](https://github.com/IJHack/QtPass/tree/HEAD) ## [Unreleased](https://github.com/IJHack/QtPass/tree/HEAD)
[Full Changelog](https://github.com/IJHack/QtPass/compare/v1.2.0...HEAD) [Full Changelog](https://github.com/IJHack/QtPass/compare/v1.2.1...HEAD)
**Implemented enhancements:**
- Cleaning \#includes [\#364](https://github.com/IJHack/QtPass/pull/364) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
**Fixed bugs:**
- Insecure Password Generation [\#338](https://github.com/IJHack/QtPass/issues/338)
- Clipboard clearing timer is not reset when new passwords are copied to the clipboard [\#309](https://github.com/IJHack/QtPass/issues/309)
- Removal of files outside of password-store [\#300](https://github.com/IJHack/QtPass/issues/300)
- Some fixes and refactoring. [\#376](https://github.com/IJHack/QtPass/pull/376) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Fix & make clearClipboard more robust [\#359](https://github.com/IJHack/QtPass/pull/359) ([lukedirtwalker](https://github.com/lukedirtwalker))
**Closed issues:**
- Multiple question marks while trying to delete password [\#385](https://github.com/IJHack/QtPass/issues/385)
- No button icons and text in "menu bar" [\#383](https://github.com/IJHack/QtPass/issues/383)
- Cannot add a new password [\#380](https://github.com/IJHack/QtPass/issues/380)
- Tiny bit of regression [\#379](https://github.com/IJHack/QtPass/issues/379)
- Running qtPass remotelly not prompting for the GPG key passphrasse [\#374](https://github.com/IJHack/QtPass/issues/374)
- Entire program is huge on High DPI screen on Linux [\#369](https://github.com/IJHack/QtPass/issues/369)
- Two new issues since latest refactoring [\#368](https://github.com/IJHack/QtPass/issues/368)
- Chocolatey package outdated [\#366](https://github.com/IJHack/QtPass/issues/366)
- How do I change the language ? [\#352](https://github.com/IJHack/QtPass/issues/352)
- Parallel make issue in qtpass-1.2.1: ld: cannot find -lqtpass [\#350](https://github.com/IJHack/QtPass/issues/350)
- "copy" icon has disappeared in v1.2.1 [\#344](https://github.com/IJHack/QtPass/issues/344)
- No password entry prompt [\#343](https://github.com/IJHack/QtPass/issues/343)
- Can't install on OS X Sierra [\#337](https://github.com/IJHack/QtPass/issues/337)
- No icon on MacOS [\#333](https://github.com/IJHack/QtPass/issues/333)
- Font and spacing used for URL links on right in main window absurdly large [\#329](https://github.com/IJHack/QtPass/issues/329)
- QtPass don't display all lines with templates [\#273](https://github.com/IJHack/QtPass/issues/273)
**Merged pull requests:**
- 2 simple fixes [\#386](https://github.com/IJHack/QtPass/pull/386) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Should fix \#383 [\#384](https://github.com/IJHack/QtPass/pull/384) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Move connect action to main.cpp. Default search text as parameter of… [\#382](https://github.com/IJHack/QtPass/pull/382) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- fix \#380 [\#381](https://github.com/IJHack/QtPass/pull/381) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Small refactoring. [\#378](https://github.com/IJHack/QtPass/pull/378) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Sorry for last error :\) [\#370](https://github.com/IJHack/QtPass/pull/370) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Optimizations :\) [\#367](https://github.com/IJHack/QtPass/pull/367) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Removed comment out \#includes [\#365](https://github.com/IJHack/QtPass/pull/365) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- fix for \#300 [\#363](https://github.com/IJHack/QtPass/pull/363) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Translated all missing content to Italian, created Release of transla… [\#361](https://github.com/IJHack/QtPass/pull/361) ([FiloSpaTeam](https://github.com/FiloSpaTeam))
- Refactoring [\#360](https://github.com/IJHack/QtPass/pull/360) ([lukedirtwalker](https://github.com/lukedirtwalker))
- Display all fields when using template setting, fixes \#273 [\#358](https://github.com/IJHack/QtPass/pull/358) ([lukedirtwalker](https://github.com/lukedirtwalker))
- Update CONTRIBUTING.md [\#354](https://github.com/IJHack/QtPass/pull/354) ([5bentz](https://github.com/5bentz))
- Add two entries in FAQ about the language [\#353](https://github.com/IJHack/QtPass/pull/353) ([5bentz](https://github.com/5bentz))
- Fix typo in french translation [\#349](https://github.com/IJHack/QtPass/pull/349) ([babolivier](https://github.com/babolivier))
- New scroll bar on large files [\#347](https://github.com/IJHack/QtPass/pull/347) ([destanyol](https://github.com/destanyol))
- Fix nested template argument list compile error [\#346](https://github.com/IJHack/QtPass/pull/346) ([martinburchell](https://github.com/martinburchell))
- Honor PREFIX during tests install [\#345](https://github.com/IJHack/QtPass/pull/345) ([SpiderX](https://github.com/SpiderX))
## [v1.2.1](https://github.com/IJHack/QtPass/tree/v1.2.1) (2018-01-04)
[Full Changelog](https://github.com/IJHack/QtPass/compare/v1.2.0...v1.2.1)
**Closed issues:** **Closed issues:**
......
...@@ -6,17 +6,17 @@ Thank you for wanting to contribute to making QtPass awesome. ...@@ -6,17 +6,17 @@ Thank you for wanting to contribute to making QtPass awesome.
## This document ## This document
This document is stil in a very early stage and needs a lot more work. This document is still in a very early stage and needs a lot more work.
## Translations ## Translations
* Add you language to the `src/src.pro` file * Add you language to the `qtpass.pro` file
under TRANSLATIONS and in the `resources.qrc` file. under TRANSLATIONS and in the `resources.qrc` file.
* Next run the command `lupdate qtpass.pro` which will create the localization files. * Next run the command `lupdate qtpass.pro` which will create the localization files.
* Edit your file with (let's imagine your language is sv_SE (Swedish) * Edit your file with (let's imagine your language is sv_SE (Swedish)
`linguist localization/localization_sv_SE.ts` `linguist localization/localization_sv_SE.ts`
Qt Linguist has very nice in-context translation options [for translators](https://doc-snapshots.qt.io/qt5-5.6/linguist-translators.html) Qt Linguist has very nice in-context translation options [for translators](https://doc.qt.io/qt-5/linguist-translators.html)
## IRC ## IRC
......
...@@ -38,7 +38,7 @@ PROJECT_NAME = QtPass ...@@ -38,7 +38,7 @@ PROJECT_NAME = QtPass
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.2.1 PROJECT_NUMBER = 1.2.2
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
......
...@@ -120,6 +120,16 @@ and 5.5 has to be adapted for the Qt version you downloaded. ...@@ -120,6 +120,16 @@ and 5.5 has to be adapted for the Qt version you downloaded.
* It's all on github, clone, change and send a pull request. * It's all on github, clone, change and send a pull request.
* Open an issue and point out defects or better yet propose changes. * Open an issue and point out defects or better yet propose changes.
### QtPass is not in my native language
* Unfortunately, QtPass might not support your native language, or the translations might be incomplete. Check if newer versions of QtPass support it.
* If translations are available but aren't working, try to set the language manually (see below) or open an issue.
### How do I set the language manually?
QtPass uses the system language. Changing it depends on your system:
* on Linux: ```LANGUAGE=fr qtpass``` will run QtPass in French.
## How can I help improve QtPass? ## How can I help improve QtPass?
### I would like to donate! ### I would like to donate!
......
...@@ -6,6 +6,7 @@ QtPass ...@@ -6,6 +6,7 @@ QtPass
[![Coverity scan](https://scan.coverity.com/projects/5266/badge.svg)](https://scan.coverity.com/projects/ijhack-qtpass) [![Coverity scan](https://scan.coverity.com/projects/5266/badge.svg)](https://scan.coverity.com/projects/ijhack-qtpass)
[![Coverage Status](https://coveralls.io/repos/github/IJHack/QtPass/badge.svg)](https://coveralls.io/github/IJHack/QtPass) [![Coverage Status](https://coveralls.io/repos/github/IJHack/QtPass/badge.svg)](https://coveralls.io/github/IJHack/QtPass)
[![codecov](https://codecov.io/gh/IJhack/QtPass/branch/master/graph/badge.svg)](https://codecov.io/gh/IJhack/QtPass) [![codecov](https://codecov.io/gh/IJhack/QtPass/branch/master/graph/badge.svg)](https://codecov.io/gh/IJhack/QtPass)
[![CodeFactor](https://www.codefactor.io/repository/github/ijhack/qtpass/badge)](https://www.codefactor.io/repository/github/ijhack/qtpass)
QtPass is a GUI for [pass](https://www.passwordstore.org/), QtPass is a GUI for [pass](https://www.passwordstore.org/),
the standard unix password manager. the standard unix password manager.
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 24 24"
version="1.1"
id="svg4"
sodipodi:docname="folder-new.svg"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1440"
inkscape:window-height="836"
id="namedview6"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-8.6440678"
inkscape:cy="12"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-1 8h-3v3h-2v-3h-3v-2h3V9h2v3h3v2z"
id="path2"
style="fill:#979797;fill-opacity:1" />
</svg>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#include "mainwindow.h" #include "mainwindow.h"
#if SINGLE_APP
#include "singleapplication.h"
#endif
#include <QApplication> #include <QApplication>
#include <QTranslator> #include <QTranslator>
...@@ -36,6 +40,7 @@ ...@@ -36,6 +40,7 @@
*/ */
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QString text = ""; QString text = "";
for (int i = 1; i < argc; ++i) { for (int i = 1; i < argc; ++i) {
if (i > 1) if (i > 1)
...@@ -72,19 +77,21 @@ int main(int argc, char *argv[]) { ...@@ -72,19 +77,21 @@ int main(int argc, char *argv[]) {
// locale = "nl_NL"; // locale = "nl_NL";
// locale = "he_IL"; // locale = "he_IL";
// locale = "ar_MA"; // locale = "ar_MA";
translator.load(QString(":localization/localization_") + locale + translator.load(QString(":localization/localization_%1.qm").arg(locale));
QString(".qm"));
app.installTranslator(&translator); app.installTranslator(&translator);
app.setLayoutDirection(QObject::tr("LTR") == "RTL" ? Qt::RightToLeft app.setLayoutDirection(QObject::tr("LTR") == "RTL" ? Qt::RightToLeft
: Qt::LeftToRight); : Qt::LeftToRight);
MainWindow w; MainWindow w(text);
QObject::connect(&app, SIGNAL(aboutToQuit()), &w, SLOT(clearClipboard()));
app.setActiveWindow(&w); app.setActiveWindow(&w);
app.setWindowIcon(QIcon(":artwork/icon.png")); app.setWindowIcon(QIcon(":artwork/icon.png"));
w.setApp(&app);
w.setText(text); QObject::connect(&app, SIGNAL(aboutToQuit()), &w, SLOT(clearClipboard()));
#if SINGLE_APP
QObject::connect(&app, SIGNAL(messageAvailable(QString)), &w,
SLOT(messageAvailable(QString)));
#endif
w.show(); w.show();
return app.exec(); return app.exec();
......
../qtpass.plist
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "QtPass" #define MyAppName "QtPass"
#define MyAppVersion "1.2.1" #define MyAppVersion "1.2.2"
#define MyAppPublisher "IJhack" #define MyAppPublisher "IJhack"
#define MyAppURL "https://qtpass.org/" #define MyAppURL "https://qtpass.org/"
#define MyAppExeName "qtpass.exe" #define MyAppExeName "qtpass.exe"
......
VERSION = 1.2.1 VERSION = 1.2.2
CONFIG(coverage) { CONFIG(coverage) {
QMAKE_LFLAGS += --coverage QMAKE_LFLAGS += --coverage
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS += src tests main SUBDIRS += src tests main
tests.depends = src main.depends = src
main.depends = tests tests.depends = main
OTHER_FILES += LICENSE \ OTHER_FILES += LICENSE \
README.md \ README.md \
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
# This should probably be part of a release process. # This should probably be part of a release process.
Name: qtpass Name: qtpass
Version: 1.2.1 Version: 1.2.2
Release: 2%{?dist} Release: 2%{?dist}
Summary: QtPass is a multi-platform GUI for pass, the standard unix password manager. Summary: QtPass is a multi-platform GUI for pass, the standard unix password manager.
License: GPLv3 License: GPLv3
......
...@@ -2,6 +2,6 @@ sed 's/FAQ\.md/https:\/\/qtpass.org\/docs\/md__f_a_q.html/' < README.md > README ...@@ -2,6 +2,6 @@ sed 's/FAQ\.md/https:\/\/qtpass.org\/docs\/md__f_a_q.html/' < README.md > README
sed 's/CONTRIBUTING\.md/https:\/\/qtpass.org\/docs\/md__c_o_n_t_r_i_b_u_t_i_n_g.html/' < README.faq > README.contrib sed 's/CONTRIBUTING\.md/https:\/\/qtpass.org\/docs\/md__c_o_n_t_r_i_b_u_t_i_n_g.html/' < README.faq > README.contrib
sed 's/CHANGELOG\.md/https:\/\/qtpass.org\/docs\/md__c_h_a_n_g_e_l_o_g.html/' < README.contrib > README.changelog sed 's/CHANGELOG\.md/https:\/\/qtpass.org\/docs\/md__c_h_a_n_g_e_l_o_g.html/' < README.contrib > README.changelog
sed 's/\[\!.*//' < README.changelog > README.clean sed 's/\[\!.*//' < README.changelog > README.clean
pandoc --standalone --from=markdown_github --to=rtf --output=README.rtf README.clean FAQ.md CONTRIBUTING.md CHANGELOG.md pandoc --standalone --from=gfm --to=rtf --output=README.rtf README.clean FAQ.md CONTRIBUTING.md CHANGELOG.md
doxygen doxygen
qmake CONFIG+=release && make && macdeployqt main/QtPass.app && appdmg appdmg.json main/QtPass.dmg qmake CONFIG+=release && make && macdeployqt main/QtPass.app && appdmg appdmg.json main/QtPass.dmg
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<file>localization/localization_en_GB.qm</file> <file>localization/localization_en_GB.qm</file>
<file>localization/localization_en_US.qm</file> <file>localization/localization_en_US.qm</file>
<file>localization/localization_pt_PT.qm</file> <file>localization/localization_pt_PT.qm</file>
<file>localization/localization_it_IT.qm</file>
</qresource> </qresource>
<qresource prefix="/icons"> <qresource prefix="/icons">
<file alias="document-new.svg">icons/document-new.svg</file> <file alias="document-new.svg">icons/document-new.svg</file>
...@@ -32,5 +33,6 @@ ...@@ -32,5 +33,6 @@
<file alias="applications-system.svg">icons/applications-system.svg</file> <file alias="applications-system.svg">icons/applications-system.svg</file>
<file alias="edit-copy.svg">icons/edit-copy.svg</file> <file alias="edit-copy.svg">icons/edit-copy.svg</file>
<file alias="edit-clear.svg">icons/edit-clear.svg</file> <file alias="edit-clear.svg">icons/edit-clear.svg</file>
<file alias="folder-new.svg">icons/folder-new.svg</file>
</qresource> </qresource>
</RCC> </RCC>
This diff is collapsed.
This diff is collapsed.
#ifndef DESELECTABLETREEVIEW_H #ifndef DESELECTABLETREEVIEW_H
#define DESELECTABLETREEVIEW_H #define DESELECTABLETREEVIEW_H
#include "QMouseEvent"
#include "QTreeView" #include <QCoreApplication>
#include "mainwindow.h" #include <QMouseEvent>
#include <QTime> #include <QTime>
#include <QTreeView>
/** /**
* @brief The DeselectableTreeView class * @brief The DeselectableTreeView class
......
...@@ -32,6 +32,7 @@ enum PROCESS { ...@@ -32,6 +32,7 @@ enum PROCESS {
PROCESS_COUNT, PROCESS_COUNT,
INVALID INVALID
}; };
}
} // namespace Enums
#endif // ENUMS_H #endif // ENUMS_H
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -163,7 +163,6 @@ QList<UserInfo> Pass::listKeys(QString keystring, bool secret) { ...@@ -163,7 +163,6 @@ QList<UserInfo> Pass::listKeys(QString keystring, bool secret) {
*/ */
void Pass::finished(int id, int exitCode, const QString &out, void Pass::finished(int id, int exitCode, const QString &out,
const QString &err) { const QString &err) {
PROCESS pid = static_cast<PROCESS>(id); PROCESS pid = static_cast<PROCESS>(id);
if (exitCode != 0) { if (exitCode != 0) {
emit processErrorExit(exitCode, err); emit processErrorExit(exitCode, err);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
../../artwork
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment