Skip to content

Commit

Permalink
Pre 2.3.4 to develop (#1356)
Browse files Browse the repository at this point in the history
* move logic for verifying version table schema onto the version ORM object (#1322)

* 2.3.3 import2.4.0 develop as 2.3.3 (#1330)

* Merge bug fixes from master to develop (#1247)

* Fix typo in header (#1152)

* Update Branching Strategy.

* fix 1180 (#1185)

* Update messages.po (POEditor.com)

* added docker size

* Added docker clone counter

* update badges

* Starting 2.4.0

* unignore everything  - just a placeholder.

* More two locations (#1267)

I find more two location and add gettext no it

* Colon clear #2 (#1250)

* Fix typo in header (#1152)

* Update Branching Strategy.

* fix 1180 (#1185)

* Update messages.po (POEditor.com)

* added docker size

* Added docker clone counter

* update badges

* Colon Clear #2

More some colons out of  gettext

* Update Dashboard.php

* Update SundaySchoolClassView.php

* Locations by saulo#4 (#1255)

* Fix SQL auto-install.  Cleanup Setup Page in case of absent signatures.json file

* remove dead comments

* Locantions by saulo #4

more two gettext added

* more one gettext

* Location and title separation

Location and title separation

* Update PersonEditor.php

* Update SystemService.php

* revert from develop

* Update from 2.3.1 master (#1279)

* prepare for 2.3.0 (#1271)

* reusing gettext family

* fix #1273 and upgrade to 2.3.1

* better code

* prep 2.3.1.

* fix #1276

* rev to 2.3.2 (#1278)

* 2.4.0 update from2.3.2 (#1308)

* prepare for 2.3.0 (#1271)

* reusing gettext family

* fix #1273 and upgrade to 2.3.1

* better code

* prep 2.3.1.

* fix #1276

* rev to 2.3.2 (#1278)

* fix 1285

* standardize on utf8mb4 (#1294)

* un-localize the conditional statement (#1296)

* added notes tab to person view (#1299)

resolves #1266

* Header HTML #1262 (#1288)

Header HTML #1262

* Adding Anniversaries to the Calendar (#1298)

* Add files via upload

Added Wedding dates to Calendar

* Add files via upload

Added helper functions to get the Wedding Day, Wedding Month, and ViewURI

* Add files via upload

Created functionality to show Wedding Dates (Anniversary) on the calendar

* added missing gettext for lables

* fixed wedding date comment

* add null check

* Will list people who are members or Regular Attender

* Fixes 1192 (#1293)

* using momentjs for age calculation

* return date object in getBirthDate
added format age suffix for just the suffix
added show age for using momentjs to display age
affects #1192

* changed data-birthdate to data-birth-date
using momentjs to calc age on Sunday School pages
removed PrintAge
resolves #1192

* resolving issues in code review

* update messages.po

* add French localization

* move to 2.3.3

* Localization cleanup for colon and case  (#1272)

* rebase on develop

* gettext Date: -> Date

* Family Name:

* address fields

* state

* Home Phone

* phones

* email

* more cleanup

* more clean up of get text

* more cleanup

* gender

* more cleanup

* fixed mailto:

* cleanup of gettext

* fixed mailto:

* gettext cleanup

* gettext cleanup

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Update messages.mo (POEditor.com)

* Update messages.po (POEditor.com)

* Poeditor cleanup (#1317)

* not files that are in poeditor

* fixed spacing

* more colon stuff

* more locale cleanup

* more cleanup

* address cleanup

* merge 2.4.0 develop into 2.3.3 master AS 2.3.3 for release of new features

* 2.3.3-update-locale

* start 2.3.4

* #1332 fixed

* use the db table as the string source for messages.po (#1340)

* fixes #1286 #1342

* Grunt for All Skin & New Localization Files (#1335)

* now using grunt for build system

* using new generated locale files for full calendar

* grunt concat now part of the NPM install

* adding bootstrap-datepicker  to loacle files

* download datatables Internationalisation plug-in files

* Internationalisation plug-ins file downloads

* using correct life cycle for NPM

* fixed missing Footer.js

* re-name files to match locale

* added grunt-contrib-rename

* added locale for JS files

* added support for datatable lanagles

* moved all skin actions to Grunt

* adminlte-copy cleanup

excluded files during copy of adminlte that we build outside

* added package

* fix npm version && add demosite script

* move signature file creation to grunt

* typo!

* make JS and PHP treat forward slashes the same.  fix gruntfile

* updated changelog pre-2.3.4

* 2.3.4 fixes (#1337)

* underp class scope and connection references

* cleanup QA environment

* move prevsiousversion to vagrant-qa

* extract DB strings as part of NPM locale-update

* use the db table as the string source for messages.po

* move to static class for arrayutils

* remove header

* whitespace

* fix line endings

* gitignores

* fixes #1348 #1347 #1345 #1344 (#1350)
  • Loading branch information
DawoudIO authored Nov 14, 2016
1 parent 180a76c commit c16547f
Show file tree
Hide file tree
Showing 35 changed files with 505 additions and 178 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ font-awesome
ionicons
fullcalendar
moment
/src/skin/locale
/src/skin/fastclick

# Configuration files with passwords
src/Include/Config.php
Expand Down
254 changes: 254 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
module.exports = function (grunt) {


// Project configuration.
grunt.initConfig({
composer: grunt.file.readJSON('src/composer.json'),
pkg: grunt.file.readJSON('package.json'),
clean: {
locale: ["src/skin/locale"],
skin: ["src/skin/{adminlte,font-awesome,ionicons,fullcalendar,moment,fastclick}"],
release: ["target"]
},
copy: {
skin: {
files: [
// includes files within path and its sub-directories
{
expand: true,
cwd: 'node_modules/admin-lte',
src: [
'{dist,bootstrap,plugins}/**',
'!plugins/fullcalendar',
'!plugins/moment',
'!plugins/fastclick',
'!dist/img/**',
'!plugins/**/psd/**'],
dest: 'src/skin/adminlte/'
},
{
expand: true,
cwd: 'node_modules/font-awesome',
src: ['{css,fonts,less,scss}/**'],
dest: 'src/skin/font-awesome/'
},
{
expand: true,
cwd: 'node_modules/ionicons',
src: ['{css,fonts,less,png}/**'],
dest: 'src/skin/ionicons/'
},
{
expand: true,
filter: 'isFile',
flatten: true,
src: ['node_modules/fullcalendar/dist/*'],
dest: 'src/skin/fullcalendar/'},
{
expand: true,
filter: 'isFile',
flatten: true,
src: ['node_modules/moment/min/*'],
dest: 'src/skin/moment/'}
]
}
},
concat: {
options: {
separator: ';\n\n',
banner: '/*! <%= composer.version %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
de_DE: {
src: ['node_modules/fullcalendar/dist/locale/de.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.de.js'],
dest: 'src/skin/locale/de_DE.js'
},
en_AU: {
src: ['node_modules/fullcalendar/dist/locale/en-au.js'],
dest: 'src/skin/locale/en_AU.js'
},
en_GB: {
src: ['node_modules/fullcalendar/dist/locale/en-gb.js'],
dest: 'src/skin/locale/en_GB.js'
},
en_US: {
src: [],
dest: 'src/skin/locale/en_US.js'
},
es_ES: {
src: ['node_modules/fullcalendar/dist/locale/es.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.es.js'],
dest: 'src/skin/locale/es_ES.js'
},
fr_FR: {
src: ['node_modules/fullcalendar/dist/locale/fr.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.fr.js'],
dest: 'src/skin/locale/fr_FR.js'
},
hu_HU: {
src: ['node_modules/fullcalendar/dist/locale/hu.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.hu.js'],
dest: 'src/skin/locale/hu_HU.js'
},
it_IT: {
src: ['node_modules/fullcalendar/dist/locale/it.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.it.js'],
dest: 'src/skin/locale/it_IT.js'
},
nb_NO: {
src: ['node_modules/fullcalendar/dist/locale/nb.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.nb.js'],
dest: 'src/skin/locale/nb_NO.js'
},
nl_NL: {
src: ['node_modules/fullcalendar/dist/locale/nl.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.nl.js'],
dest: 'src/skin/locale/nl_NL.js'
},
pl_PL: {
src: ['node_modules/fullcalendar/dist/locale/pl.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.pl.js'],
dest: 'src/skin/locale/pl_PL.js'
},
pt_BR: {
src: ['node_modules/fullcalendar/dist/locale/pt-br.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js'],
dest: 'src/skin/locale/pt_BR.js'
},
ro_RO: {
src: ['node_modules/fullcalendar/dist/locale/ro.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.ro.js'],
dest: 'src/skin/locale/ro_RO.js'
},
ru_RU: {
src: ['node_modules/fullcalendar/dist/locale/ru.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.ru.js'],
dest: 'src/skin/locale/ru_RU.js'
},
sq_AL: {
src: ['node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.sq.js'],
dest: 'src/skin/locale/sq_AL.js'
},
sv_SE: {
src: ['node_modules/fullcalendar/dist/locale/sv.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.sv.js'],
dest: 'src/skin/locale/sv_SE.js'
},
vi_VN: {
src: ['node_modules/fullcalendar/dist/locale/vi.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.vi.js'],
dest: 'src/skin/locale/vi_VN.js'
},
zh_CN: {
src: ['node_modules/fullcalendar/dist/locale/zh-cn.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js'],
dest: 'src/skin/locale/zh_CN.js'
},
zh_TW: {
src: ['node_modules/fullcalendar/dist/locale/zh-tw.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js'],
dest: 'src/skin/locale/zh_TW.js'
}
},
'curl-dir': {
datatables: {
src: ['https://cdn.datatables.net/plug-ins/1.10.12/i18n/{Albanian,Chinese-traditional,Chinese,Dutch,English,French,German,Hungarian,Italian,Norwegian-Bokmal,Polish,Portuguese,Romanian,Russian,Spanish,Swedish,Vietnamese}.json'],
dest: 'src/skin/locale/datatables'
},
fastclick: {
src: ['https://raw.githubusercontent.com/ftlabs/fastclick/569732a7aa5861d428731b8db022b2d55abe1a5a/lib/fastclick.js'],
dest: 'src/skin/fastclick'
}
},
rename: {
datatables: {
files: [
{src: ['src/skin/locale/datatables/English.json'], dest: 'src/skin/locale/datatables/en_US.json'},
{src: ['src/skin/locale/datatables/German.json'], dest: 'src/skin/locale/datatables/de_DE.json'},
{src: ['src/skin/locale/datatables/Spanish.json'], dest: 'src/skin/locale/datatables/es_ES.json'},
{src: ['src/skin/locale/datatables/French.json'], dest: 'src/skin/locale/datatables/fr_FR.json'},
{src: ['src/skin/locale/datatables/Hungarian.json'], dest: 'src/skin/locale/datatables/hu_HU.json'},
{src: ['src/skin/locale/datatables/Italian.json'], dest: 'src/skin/locale/datatables/it_IT.json'},
{src: ['src/skin/locale/datatables/Norwegian-Bokmal.json'], dest: 'src/skin/locale/datatables/nb_NO.json'},
{src: ['src/skin/locale/datatables/Dutch.json'], dest: 'src/skin/locale/datatables/nl_NL.json'},
{src: ['src/skin/locale/datatables/Polish.json'], dest: 'src/skin/locale/datatables/pl_PL.json'},
{src: ['src/skin/locale/datatables/Portuguese.json'], dest: 'src/skin/locale/datatables/pt_BR.json'},
{src: ['src/skin/locale/datatables/Romanian.json'], dest: 'src/skin/locale/datatables/ro_RO.json'},
{src: ['src/skin/locale/datatables/Russian.json'], dest: 'src/skin/locale/datatables/ru_RU.json'},
{src: ['src/skin/locale/datatables/Albanian.json'], dest: 'src/skin/locale/datatables/sq_AL.json'},
{src: ['src/skin/locale/datatables/Swedish.json'], dest: 'src/skin/locale/datatables/sv_SE.json'},
{src: ['src/skin/locale/datatables/Vietnamese.json'], dest: 'src/skin/locale/datatables/vi_VN.json'},
{src: ['src/skin/locale/datatables/Chinese.json'], dest: 'src/skin/locale/datatables/zh_CN.json'},
{src: ['src/skin/locale/datatables/Chinese-traditional.json'], dest: 'src/skin/locale/datatables/zh_TW.json'}
]
}
},
compress: {
package: {
options: {
archive: 'target/ChurchCRM-<%= composer.version %>.zip',
mode: "zip",
pretty: true
},
files: [
{
expand: true,
cwd: 'src/',
src: [
'**',
'**/.*',
'!**/.gitignore',
'!vendor/**/example/**',
'!vendor/**/tests/**',
'!vendor/**/docs/**',
'!Images/Person/thumbnails/*.jpg',
'!composer.lock',
'!Include/Config.php',
'!integrityCheck.json'
],
dest: 'churchcrm/'
}
]
}
},
generateSignatures: {
sign:{
version: '<%= composer.version %>',
files: [{
expand: true,
cwd: 'src/',
src: [
'**/*.php',
'**/*.js',
'!**/.gitignore',
'!vendor/**/example/**',
'!vendor/**/tests/**',
'!vendor/**/docs/**',
'!Images/Person/thumbnails/*.jpg',
'!composer.lock',
'!Include/Config.php',
'!integrityCheck.json'
],
dest: 'churchcrm/'
}]
}
}
});

grunt.registerTask('hash','gets a file hash',function(arg1){
var sha1 = require('node-sha1');
grunt.log.writeln(sha1(grunt.file.read(arg1,{encoding:null})));
});

grunt.registerMultiTask('generateSignatures', 'A sample task that logs stuff.', function() {
var sha1 = require('node-sha1');
var signatures = {
"version":this.data.version,
"files":[]
}
this.files.forEach(function(filePair) {
isExpandedPair = filePair.orig.expand || false;

filePair.src.forEach(function(src) {
if (grunt.file.isFile(src))
{
signatures.files.push({"filename":src.substring(4),"sha1":sha1(grunt.file.read(src,{encoding:null}))});
}
});
});
signatures.sha1=sha1(JSON.stringify(signatures.files));
grunt.file.write("src/signatures.json",JSON.stringify(signatures));
});

grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-contrib-rename');
grunt.loadNpmTasks('grunt-curl');
};
36 changes: 0 additions & 36 deletions generateSignatures.php

This file was deleted.

18 changes: 16 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,28 @@
"url": "https://github.com/ChurchCRM/CRM/issues"
},
"homepage": "http://www.churchcrm.io",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-curl": "~2.2.0",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-clean": "^1.0.0",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-compress": "^1.0.3",
"grunt-contrib-rename": "^0.0.3",
"node-sha1":"1.0.1"
},
"dependencies": {
"admin-lte": "2.3.7",
"ionicons": "2.0.1",
"font-awesome": "4.6.3",
"fullcalendar": "3.0.1"
},
"scripts": {
"install": "/vagrant/scripts/build-skin.sh",
"locale-gen": "cd src && find . -iname '*.php' | grep -v ./vendor | xargs xgettext --from-code=UTF-8 -o locale/messages.po -L PHP"
"preinstall": "grunt clean",
"install": "grunt curl-dir && grunt copy",
"postinstall": "grunt concat && grunt rename",
"locale-gen": "/vagrant/scripts/update-locale.sh",
"package": "grunt generateSignatures && grunt compress",
"demosite": "/vagrant/scripts/demosite.sh"
}
}
51 changes: 0 additions & 51 deletions scripts/build-skin.sh

This file was deleted.

Loading

0 comments on commit c16547f

Please sign in to comment.