Merge pull request #1037 from snnd/locale-service

Added Locale Service. Minor Controller Refactoring.
This commit is contained in:
Jakob Borg committed 2014-12-01 10:38:44 +01:00
commit bb50b677c7
5 files changed
+166 -78

No files matched your search

+1
View File
@@ -868,6 +868,7 @@
<script src="scripts/syncthing/core/filters/basenameFilter.js"></script>
<script src="scripts/syncthing/core/filters/binaryFilter.js"></script>
<script src="scripts/syncthing/core/filters/naturalFilter.js"></script>
<script src="scripts/syncthing/core/services/localeService.js"></script>
<script src="assets/lang/valid-langs.js"></script>
<script src="scripts/syncthing/app.js"></script>
+6 -1
View File
@@ -25,7 +25,7 @@ var syncthing = angular.module('syncthing', [
var urlbase = 'rest';
var guiVersion = null;
syncthing.config(function ($httpProvider, $translateProvider) {
syncthing.config(function ($httpProvider, $translateProvider, LocaleServiceProvider) {
$httpProvider.defaults.xsrfHeaderName = 'X-CSRF-Token';
$httpProvider.defaults.xsrfCookieName = 'CSRF-Token';
$httpProvider.interceptors.push(function () {
@@ -42,11 +42,16 @@ syncthing.config(function ($httpProvider, $translateProvider) {
};
});
// language and localisation
$translateProvider.useStaticFilesLoader({
prefix: 'assets/lang/lang-',
suffix: '.json'
});
LocaleServiceProvider.setAvailableLocales(validLangs);
LocaleServiceProvider.setDefaultLocale('en');
});
// @TODO: extract global level functions into seperate service(s)
@@ -1,13 +1,43 @@
angular.module('syncthing.core')
.controller('SyncthingController', function ($scope, $http, $translate, $location) {
.controller('SyncthingController', function ($scope, $http, $location, LocaleService) {
'use strict';
// private/helper definitions
var prevDate = 0;
var getOK = true;
var navigatingAway = false;
var online = false;
var restarting = false;
function initController() {
LocaleService.autoConfigLocale();
refreshSystem();
refreshConfig();
refreshConnectionStats();
refreshDeviceStats();
$http.get(urlbase + '/version').success(function (data) {
$scope.version = data.version;
});
$http.get(urlbase + '/report').success(function (data) {
$scope.reportData = data;
});
$http.get(urlbase + '/upgrade').success(function (data) {
$scope.upgradeInfo = data;
}).error(function () {
$scope.upgradeInfo = null;
});
setInterval($scope.refresh, 10000);
}
// pubic/scope definitions
$scope.completion = {};
$scope.config = {};
$scope.configInSync = true;
@@ -25,47 +55,12 @@ angular.module('syncthing.core')
$scope.stats = {};
$scope.progress = {};
$http.get(urlbase + "/lang").success(function (langs) {
// Find the first language in the list provided by the user's browser
// that is a prefix of a language we have available. That is, "en"
// sent by the browser will match "en" or "en-US", while "zh-TW" will
// match only "zh-TW" and not "zh-CN".
var lang, matching;
for (var i = 0; i < langs.length; i++) {
lang = langs[i];
if (lang.length < 2) {
continue;
}
matching = validLangs.filter(function (possibleLang) {
// The langs returned by the /rest/langs call will be in lower
// case. We compare to the lowercase version of the language
// code we have as well.
possibleLang = possibleLang.toLowerCase();
if (possibleLang.length > lang.length) {
return possibleLang.indexOf(lang) === 0;
} else {
return lang.indexOf(possibleLang) === 0;
}
});
if (matching.length >= 1) {
$translate.use(matching[0]);
return;
}
}
// Fallback if nothing matched
$translate.use("en");
});
$(window).bind('beforeunload', function () {
navigatingAway = true;
});
$scope.$on("$locationChangeSuccess", function () {
var lang = $location.search().lang;
if (lang) {
$translate.use(lang);
}
LocaleService.useLocale($location.search().lang);
});
$scope.needActions = {
@@ -87,7 +82,7 @@ angular.module('syncthing.core')
}
console.log('UIOnline');
$scope.init();
initController();
online = true;
restarting = false;
$('#networkError').modal('hide');
@@ -181,10 +176,10 @@ angular.module('syncthing.core')
$scope.$on('DownloadProgress', function (event, arg) {
var stats = arg.data;
var progress = {};
for(var folder in stats){
for (var folder in stats) {
refreshFolder(folder);
progress[folder] = {};
for(var file in stats[folder]){
for (var file in stats[folder]) {
var s = stats[folder][file];
var reused = Math.floor(100 * s.Reused / s.Total);
var copiedFromOrigin = Math.floor(100 * s.CopiedFromOrigin / s.Total);
@@ -197,24 +192,24 @@ angular.module('syncthing.core')
pulling = 1;
}
progress[folder][file] = {
Reused: reused,
CopiedFromOrigin: copiedFromOrigin,
Reused: reused,
CopiedFromOrigin: copiedFromOrigin,
CopiedFromElsewhere: copiedFromElsewhere,
Pulled: pulled,
Pulling: pulling,
BytesTotal: s.BytesTotal,
BytesDone: s.BytesDone,
Pulled: pulled,
Pulling: pulling,
BytesTotal: s.BytesTotal,
BytesDone: s.BytesDone,
};
}
}
for(var folder in $scope.progress){
for (var folder in $scope.progress) {
if (!(folder in progress)) {
refreshFolder(folder);
if ($scope.neededFolder == folder) {
refreshNeed(folder);
}
} else if ($scope.neededFolder == folder) {
for(file in $scope.progress[folder]){
for (file in $scope.progress[folder]) {
if (!(file in progress[folder])) {
refreshNeed(folder);
break;
@@ -379,27 +374,6 @@ angular.module('syncthing.core')
});
}, 500);
$scope.init = function () {
refreshSystem();
refreshConfig();
refreshConnectionStats();
refreshDeviceStats();
$http.get(urlbase + '/version').success(function (data) {
$scope.version = data.version;
});
$http.get(urlbase + '/report').success(function (data) {
$scope.reportData = data;
});
$http.get(urlbase + '/upgrade').success(function (data) {
$scope.upgradeInfo = data;
}).error(function () {
$scope.upgradeInfo = null;
});
};
$scope.refresh = function () {
refreshSystem();
refreshConnectionStats();
@@ -987,7 +961,7 @@ angular.module('syncthing.core')
$scope.showNeed = function (folder) {
$scope.neededFolder = folder;
refreshNeed(folder);
$('#needed').modal().on('hidden.bs.modal', function(){
$('#needed').modal().on('hidden.bs.modal', function () {
$scope.neededFolder = undefined;
$scope.needed = undefined;
});
@@ -1024,6 +998,6 @@ angular.module('syncthing.core')
$http.post(urlbase + "/scan?folder=" + encodeURIComponent(folder));
};
$scope.init();
setInterval($scope.refresh, 10000);
// pseudo main. called on all definitions assigned
initController();
});
@@ -0,0 +1,83 @@
angular.module('syncthing.core')
.provider('LocaleService', function () {
var _defaultLocale,
_availableLocales;
this.setDefaultLocale = function (locale) {
_defaultLocale = locale;
};
this.setAvailableLocales = function (locales) {
_availableLocales = locales;
};
this.$get = ['$http', '$translate', function ($http, $translate) {
/**
* Requests the server in order to get the browser's requested locale strings.
*
* @returns promise which on success resolves with a locales array
*/
function readBrowserLocales() {
// @TODO: check if there is nice way to utilize window.navigator.languages or similiar api.
return $http.get(urlbase + "/lang");
}
function autoConfigLocale() {
return readBrowserLocales().success(function (langs) {
// Find the first language in the list provided by the user's browser
// that is a prefix of a language we have available. That is, "en"
// sent by the browser will match "en" or "en-US", while "zh-TW" will
// match only "zh-TW" and not "zh-CN".
var i,
lang,
matching;
for (i = 0; i < langs.length; i++) {
lang = langs[i];
if (lang.length < 2) {
continue;
}
matching = _availableLocales.filter(function (possibleLang) {
// The langs returned by the /rest/langs call will be in lower
// case. We compare to the lowercase version of the language
// code we have as well.
possibleLang = possibleLang.toLowerCase();
if (possibleLang.length > lang.length) {
return possibleLang.indexOf(lang) === 0;
} else {
return lang.indexOf(possibleLang) === 0;
}
});
if (matching.length >= 1) {
$translate.use(matching[0]);
return;
}
}
// Fallback if nothing matched
$translate.use(_defaultLocale);
});
}
function useLocale(language) {
// @TODO: eventually check for valid locale format
if (language) {
$translate.use(language);
}
}
return {
autoConfigLocale: autoConfigLocale,
useLocale: useLocale
}
}];
});
+29 -4
View File
@@ -8,10 +8,15 @@ import (
)
func Assets() map[string][]byte {
var assets = make(map[string][]byte, 52)
var assets = make(map[string][]byte, 57)
var bs []byte
var gr *gzip.Reader
bs, _ = base64.StdEncoding.DecodeString("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")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets[".DS_Store"] = bs
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/5xWaW/bOBD97l8x28UCSdZXnAtrL4r1Bk0boE0Dx0GRj5REWUQoUiApHy363/dRVxxHToMN4NiiyDdvZt7McHDUGQzoUmcbIxaJo4PLQxoNj09pnnC626jQJUItaJq7RBvbx2a/f54IS5nRC8NSws/YcE5Wx27FDB/TRucUMkWGR8I6I4LccRKOmIoG2lCqIxFvsOChchVxQw7WHDepJR0XDx9v7ukjV9wwSbd5IEVIn0XIleXEYNqv2IRHFGyK7Vcg4NHuKg50pQHMnNCqS1xgi6ElNxbPdFLbqAC7BE4HzHnahnTmDx16MKY2JJl7OrrP/ScvIxKqwE50Bo8SoMLvlZCSAk655XEuu4Sd9O16/unr/dzDTW8e6Nt0NpvezB8m2IxQYwNf8hJKpJkUQIZfhim38fS/fJhdfsL+6b/Xn6/nD/DAA11dz28+3N3R1dcZTel2OptfX95/ns7o9n52+/XuQ5/uOP9VeOMSK9WIYsQdE7JJ+wPyakFORpSwJUd+Qy6WoMYohILekjup1cJDeS+x+SmOfbqOSWnXJQuOfyfOZePBYLVa9Rcq72uzGMgSww7e9ztHg04n0NGGfnQIfxmLIsi0F2jndDqmi2G2nhRvYq1cL2apkJsxvfvE5ZI7ETK64Tl/16VmoUtTIxhyY5myPcuNiCedn51OctylZITPCT6n+JxVJp8Dz5jkK7YB4v+wkcs/G9iUmYVQPaezMR33z3ha7BARV0CAeMtdEFwmGQwLJYXivUDq8LF0ONNWeAWPkR2IF+kp11cicgkwPaJ/Triv962FAujFqob0Y6lXY1oKKwLJCz79MOHhY6DXLayL0Ps9u6QrBidNbmpjJ82RjCkuQYL5bNILhMbtVn9ZYLVEDZbrBZfeaW1L8hiWen+1W/rxauieYpCICJR23UMZuFoVqPQx/X5+fl5ucnzteqlW2mYs5G3S+cKV1F36ohUL8X2pFbxgFkK6RDsSaD43fAUVNSAVMEMuerAe+ZqI3jvvyntn8KNLL9/6Wtn/Ntba7X/bIEevIre+bZCjyvdAG/T7UilKq8obqRf6mZQgo8l2ZTfPZVrP6rS2pawAREfuKd0Lcil5nZxi0boNKLpNxksC1XaQlnn6hvpKofNKyRd1kVTyNzu1E7DwcWH8IPLo2oDkIjgYnZx3aXQ69P+ODyfbUTFQY25REI17tffH2ZoaLdchGmFxVAp6ywOIRPUx+tjz2iwLYFi2lB1Hjof1YqFXJsXCR9S7M3ktHj506Lqh1OxxN3I+tvQbZpc2DlNrS7Vo+3VHSITjvULV/sDKsGyra6+q9nA6HD47He00/dKzEZrIPntR36ZMyt5WVFpN40hxYlfH1ZlyFd5hPI9R6mse+TPtRxqaL7tHE+inV1xKkVlhJ6+R+yfFfYrRQcrWVeYuzi+y9eE2vf08/N/gyI939JJAIC5ZghxZlBTGMlgUEyAwnD1af4vxkxpVhfGMMxLyHNgEN6uoGN0N4hGVsrN9wkyuV3ccMIh+6dnPUjNsGTBT1kvFDswKHlBeeTcoGnSNWae6rrCz5228uAnsSVol//pmUEkpQu/XRnyHzpj0TwqXK4Qgcs+H1WkzmvaeiNrq7Lw+Nzg66iBIt/6Sw61FTzC2dBCXGVwtfYYghY73FO7U29q5/6rrNceLHhCbgmutjq3KLk2/Pj/bZm3TLoZ/VPWV4N5dNZ6aNOo2eBSuWsVXrvyMLxEwC7+3v3mxWOCv9JvQR3vRR23oo+ratcNfii75xS2jUrQ2m602WsRVeM35+8WwvrL9BwAA//8BAAD//zISXddYDQAA")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
@@ -142,7 +147,7 @@ func Assets() map[string][]byte {
bs, _ = ioutil.ReadAll(gr)
assets["assets/lang/valid-langs.js"] = bs
bs, _ = base64.StdEncoding.DecodeString("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 truncated
bs, _ = base64.StdEncoding.DecodeString("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 truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["index.html"] = bs
@@ -152,17 +157,32 @@ func Assets() map[string][]byte {
bs, _ = ioutil.ReadAll(gr)
assets["modal.html"] = bs
bs, _ = base64.StdEncoding.DecodeString("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")
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/+yYOw7CMBBEd4wLSzQuKd1wAG5gReEEXICCK9D76CTaEbIUUlAlgnmS9VaKnU/j7NjMMDwfF7M8lcncdraPJI4FoavBewghhBBi38CVjtu+hhBih8z7Q6Er3dzg9UDHbk2mC13p5gbnBTrSic50oSvd3Ny0wPABPhlMKGAKQaHrlx8txJ9wcOX5/3+11fwvhPhhEMfbONg7ECwnTOPe1c3Wm4Dgh4Wnbm2hK93cagSE2IoXAAAA//8BAAD//2oAiG0EGAAA")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["scripts/.DS_Store"] = bs
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/+yaXWwUVRvHz/N0obN0hk5ZoHxseRf6Bgo0ZVsKhb4EttvyXaB0S3f7AdvdnXnpvExn+u5st4SC9kIS+VKjUYkmGi40iMZEI+BX4oUxMVGj0bkQokbFK2MiidyI8ePM7lkohWliYlIC57fZ/s/OnufMPKfP/6RnpoQQCA8ptYQEaFMgeZVFckcE9r4NZOpxxqPxJDlsDSZ1M0k/f3XnsTgcDofD4UwykBehZHIvg8Ph3IU460OAaYjpaF6BfY9MPWNiZKYBpiGmo3kF1g+ZepgKTGWmAaYhpqN5ZYsWsM0HsDMD26GAzDTANPQ3k+Zw7iM8uXeKmCRN1LH79+SgrlmZYPBLwCLPlKnFgncafU0v9e6N9JvDkUwiM2SFE+ke51NbItOfZO0O09RvtBPJTk0djsszm00jk9AMNZ0L1hSVdumNaoZiDofNIUOxetnBqKZk+nvG9PIK9BWX54yM1K1qqA7UrVxzpDow0tAQrA7Urw4eOSI/4xXmLlm5YXvSPPzwseMnTp46ey6fWmGpIGXjcn55bM66lW3L51x0ppDz5Zs5l4jS9H3xvnIxGZdnZGkyuwYzmmlYnWraohqXSy16rVtTptGWVrO5ZMtSCT01pCcyapOuR7RDqhVNmfrQgGE5vVNpU9fbTEtzhumKZdSDGafPbV/Fui0znWnOBcZlechS21U6ppZVW+jIVkyjp3QCZfAK50rnBJasaNiweVfUlstm+MRZYnk0q1laUlf3DDsz2pWwUqqhaMb+bjqtRkb7r6amvWVQ4u0wEgOqPXfefJ9YIf3LLcornxd6FXriHabixCr2wkWVPqlCWuwWIQg9Tv/mtEp/KnbV0mU+sVqqcT9BQuiwaD52sLbOJ9aLq917Wt6OA7R07DVrG33SOnG96yXIinePnkiquh1qCvukFnGTe9ft3mg2/zu1t2zd5pNaxZ2uncug2htLmQMDdCYtu213u0/qkDrdx/5Q2OfMRWvCyuwaVA06HbGubme+97omKXQ5EU2KoiqVhbqtDFWxRuGItzIUZE2BVJA60kJipI+W9Qg5RU7TQn+DXCAXyZvkffIxscll8gP5mVwlv5Br5FdAmAYyzIP5UAELYDnUwzoIQyvsgJ3QDSk4AP+HETgMD8CD8BCcgifhWXgBXoSz8BK8ChfhPfgAPoXP4HP4Ai7B9/AjXIXr8Bv8Dn/gVCzFcqzAJViFy7EaV+F63ISt2IlR7MJu1DCNh3AUj+MJPIlP4fN4Fl/D1/OpYMG4qVt9i++MMy5brIqOuRg33peYLabuYuNeKnXsOnPW7PI5C5fWrm3aurvrRl2NK5mxbsoZJV/ZOScUKjfn5VttSo3tlxaIAbdC20PD1YO5ipaL7UWV//ZLi6WqiUpZFuxly6v9Uo0UdO92XpDRrltZ7xdXS2sm8rxcZDf+Z51fWi+GJrKxPMUON7f4xU3ilonWBdljb9ve6pd2im0TOV2eardHOvxipxhzHc1ZG2Vid/f0+sUaqcTdqP+EPT+i5rxCrXmNXCd/QjGIMBcWwTIIQiOEoAlaYCNshjaIwT7oB41aUwcDhqkxj8Kj8Bg8Dk9Qez5HzfkKXKDWfAvehnepPT+h1vwavoFv4Tu4Aj/BNbiOHpyCxSjgNPThfFyYs2cNrsBabMQwbsF2jDCbJvF/OEhtOoKH8Sg+gk/j6XEGVcYZ9MxYg2YjaUM3jf3kxp0GDofD4XA4k05RXgLO/f+N7s//ORzOPQx4WiItYeL+Z7pzrz1A332FADLxgwDM/8NQFTsWJDfjQkxH8zpJDwP4/p/v/+/z/f/tLudwOBwOh8PhcDgcDofD4XA49wp/AQAA//8BAAD///RyKx4EPAAA")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["scripts/syncthing/.DS_Store"] = bs
bs, _ = base64.StdEncoding.DecodeString("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")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["scripts/syncthing/app.js"] = bs
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/+yaXWwUVRvHz/O00Fk6Q6csUD62vAt9AwWasi2FQiWw3ZbvAqUt7fYDtrs7Ax2ZztSd6ZZQ0F5IIl9qNCrRRMOFBtGYaAT8SrwwJiZqNDoXQtSoeGVMJJEbMX6c2T0LpWWamBghcH6b5X+YOc+ZeU6f/0nPTAkhEBlUqggJ0qZAsiqL5JYI7DsOZJrvjkfjCVFJiliJIWsgod96LA6Hw+FwOLcZyIpQeHtvg8Ph3IG460OQaZjpSFaBnUem+aNiZKZBpmGmI1kF1g+Z5jMVmMpMg0zDTEeyyhYtYJsPYFcGtkMBmWmQafgfJs3h3EO49ikge4lGdGKP3r+bCXrm68SArll2KPQVYF7+pMkFgm8K/Uwt8u1u7TOHWu24PWhF4qlu93/Ncbsvwdptpqlfb8cT7Zo6FJOnN5iGHdcMNZUJ1hSVdunp0AzFHIqYg4Zi9bCDHZpi93WP6uUT6Ccmzxoerl5RWxGsXr7qcEVwuLY2VBGsWRk6fFh+1ifMXrR83daEeeiRo8eOnzh55mw2wdyCQYrHZP7K+Mx1K92czTzvdC7zSzcyLxSlqXtivSViIiZPS9OUdgzYmmlY7WrKohqTiyx6x5uTptGcUtOZlIuTcT05qMdttV7XW7WDqtWRNPXBfsNyeydTpq43m5bmDtMZtdUDtttn3Klol2Wm7IZMYEyWBy21RaVjamm1kY5sRTV6STdQBp9wtmhWcNGy2nUbd3Q4cvE0vzhDLOlIa5aW0NVdQ+68dsatpGoomrGvi06uYWt7NTXlK4ZCX5sR71ed2XPm+sVS6X9eUT75nNCj0AtvMxU3VnHmLyjzS6XSQq8IQeh2+zekVPqv4pQvXuIXK6RK7wvEhTaL5uOEqqr9Yo240run5WvbTwvIWbW6zi+tEdd63oKs+Hbp8YSqO+H6iF9qFDd4d93q60hnf6bOps1b/FKTuN2zczFU+KJJs7+fzqTlNO9s8UttUrv32B8Je9y5aIpb9o4B1aDTEe3scud7t2eSQqcbUa8oqlKWq96ycDlr5I74ysIh1hRIKakmjSRKemlZD5OT5BQt9zfJeXKBvEU+IJ8Qh1wiP5JfyBXyK7lKfgOEKSDDHJgLpTAPlkINrIEINME22A5dkIT98AAMwyF4EB6Ch+EkPAXPwYvwEpyBl+E1uADvw4fwGXwOX8CXcBF+gJ/gClyD3+EP+BMnYxGWYCkuwnJcihW4AtfiBmzCduzATuxCDVN4EEfwGB7HE/g0voBn8HV8I5sK5uybvNm9+O4t7csWrryjHvaN9cZnisk72L4Xi1zTTp8xs2TW/MVVq+s37+y8Xl1jCme0pzJ2ydZ3xg+5+s04+mazUnsHpHli0KvcdtFw9UCmruUCZ0HZ/wPSQql8ooKWBWfJ0oqAVCmFvLudE2R0qpfXBMSV0qqJnC/nOXX3rQlIa8XwRGaWJzmRhsaAuEHcNNHqIOc7W7Y2BaTtYvNEfpcnOy2tbQGxXYx6juaukDJxurp7AmKlVOht13/DpB9Ti16mBr1KrpG/oABEmA0LYAmEoA7CUA+NsB42QjNEYQ/0gUYNqoMBQ9SeR+AxeByegCepSZ+nFn0VzlODvg3vwHvUpJ9Sg34D38J38D1chp/hKlzDfJyEBSjgFPTjXJyfMWklLsMqrMMIbsIWbGVmTeD9OEDNOoyH8Ag+is/gqTE2VcbY9PR4m6ZbU4ZuGvvI9ScQHA6Hw+Fw/jPyshJ0n/+v937/z+Fw7mIgv7G1MUK8fx13n7UH6bc3F0AmfhGA2T8YKmfHQuRGXJjpSFZv08sAvv/n+/97fP8/zuQcDofD4XA4HA6Hw+FwOBwO567hbwAAAP//AQAA///YPyqJBDwAAA==")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["scripts/syncthing/core/.DS_Store"] = bs
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/7RUT4/aPhC98ynmt0JK0C8NUKknRHtod6U99dCteqh6MMkkseTYyB4vQhXfvWOHDRCCtqpaXwjz/z2/sdC1V8LmrSm9wjRxe11QI3WdF8ZiMpsAH/7WZI1SaNPk/hk1fewNSQaV5xxpNKRTV5gtZjBtiLYz+Bmzw0m8Q3BkZUHJatKbu/hcCUexLKxBe6VWfcCzsBC8j5/YtTjLDA7niwKde9DsO81QChLnrcOZz+Fbgxq+vKADi46EJQe7RioEahCUYfuWQQU/I9bYVZQOpB6W21pTcw0XMzfW7Bxa4GBnWoStElQZ2zpuQ95qBwLeLhaQOqmL2GxYrkFRonXQCAcb5Ekr5V2DJewkNbFHV4nnKjHUmmWdSxsIgPNhwaeGx94IJwuh1B5aFDrMKigWO0PXd2Q0SBkIXXYhnDcsuuNYbQhEQT6W5RtgDiqvLvvLCtL/xu4hHLTW2Afd3dPqyt3hvLQfJhd/j6qZYispTb4+ftZ8ZazV1eRqiqN23sNibJTIHF/UvSia9KQgDFIciw+HqXNGsWZNnd7FyLsM4m8uy5cv2oct6L5v4LwCcpU5knSY/Q4x5+sUun+POBXqmgXzBpY/Lov0+zVMZ0ADSlkhT7JF4+mMrjGm4gOQ10ipt4pliPA/JPMIy32IW7BO2NS1no2Skx/XO+3X/EZcFFR6lNWQoAze8bKcjIfBG3JMe/UFudJcVY2K7u8wpCS3WS+Tf8vMcnGTmj+Y7rWpRqcJgv4FAAD//wEAAP//QKHce4MGAAA=")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["scripts/syncthing/core/controllers/eventController.js"] = bs
bs, _ = base64.StdEncoding.DecodeString("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 truncated
bs, _ = base64.StdEncoding.DecodeString("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 truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["scripts/syncthing/core/controllers/syncthingController.js"] = bs
@@ -217,6 +237,11 @@ func Assets() map[string][]byte {
bs, _ = ioutil.ReadAll(gr)
assets["scripts/syncthing/core/module.js"] = bs
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/4xWTW8bNxC9+1cMBANa2coq7dGqi7QOegpqoHGRgxEE1O6slihFqiR3FaXQf+/Mfmk/JfNiL8mZN/PmzVBCbzMlbLgzcaYwmLujjnwq9TaMjMX54gZohXtrchmjDeafTCQUfkabywjnS0gyui+NhmAB/90Ut3nlwsK3GBORKV+aLJszXt9ELqQSG4XlqVufbQnehQ79x7Y5PLagVLHFgB2fcc+gvLZuLp1GQH7rxTGC4wZA/eAbLHcB7HaLni6+zm9T7/dE3fzWW6GdEr5LZHG+hPNph1leq7u7zjfcwV/4b4bOO8JCcFQetCA1GEtVA2+AwfloY82BjucObGmBcRU7OG+p7i7sue4jfbDoM6sdkCh20iEcUhmlQJG7LIrQsWdnVE60HKRPQdTcgLBWHHvuVp3vhgSLIv69DLXiOOhXoSBiBR9enj8+P0CUYvQPyISTtAjSgSaBwkEcOfvMSyV/0KfUsTmEWuRyK7yxoWL9iy0FZyw4uaNrpFyxl+HNAKzMG4ryhMRnkFm1EUTAPcxW7Gi2WHeMTjfjyYnMmyejE7ktcwsGBW7BjTERVkwHLakS/kCoLZr+oMwLASTSOg913qwR3lWSNqsuj2FzLDazUiiVZKY8+1R45luQPSbyO5iEa14DHBBSkSM0PRPCS2mxhBnq2ZRbh9rXgVQRUPmUgp3wJDc25ZrR33d/f54tWYWk4dmP9N3Ll1lxc8pz6cBodWyuCyJHG198P/05Gyk+Lx5qcjl6xItTnj4tUKm/1uO+E8olkDQf3q9Bwi+FMxcq1Fuf0s79/VRta2SeQWzzKr9OQPCiBimkUnkmoJ8vOeYVGe2lznA9ees0jVdnTdENpmaYSOXpTTmLeG+ck3yBIrwWFhXyhYXLOVe9clbuikaQX5VnhKVK5WwKuStzmBBzy3VEfR3CF6Tsd3tBA4WGSNEnbMyHQAPWcdAmKQ8qvV91bOJWT9CIRKXCi0ZtUojG9mfozScO6IkCChbTBeLFle/YVgr4FVp6uEY6r2oudXzRcMHvz0khrQU8PrKMLzo6ASoi8c1oqo3Slclb0Kalu7jSLLWAG7oe4adrLJ1f7pBGaOPi9f3XKzUqk73UaG/f5ZlPyt+I8lmk6Vb0YREMxqMmvbi7v6dGQh+QN/Xgkbfqpavb5PJjjjkN/4yiP1bvOk/HXCjZ/FahDcpk4KIeb1MQI1k210fyu5RcJcwhRv91fxjsDB+JhqCH878346Gc6vHO7P8PAAD//wEAAP//iv6Rmr4LAAA=")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["scripts/syncthing/core/services/localeService.js"] = bs
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/0SPsW4iMRCG+3sKM0I6W7L8AKCrTtw16ZIOURh7nDXx2pvxLAQtvHucJZBuPP413/fb/DomS6YvfkwoYbDV2TQQuo4Nk801WUZQJljHhc4Slo/tM1uO7l9MWJ+K9Uigt7B8Bw3LjnkAHcbsOJYsrd6riZBHyuKxdGqKQS7c5bJwphFD/JjHOoY2Ku6onETGk9gQFZLwt4zJ598sUoOJOsNF+KJrkYu4XRCFxO2AqAO6GCL6Baj10ZLwf6zxGJCkWn/L7OU0Ulpt7wLamTc867vEzhxKzBJA6R65K34F/zcvoAdLtq8rgKtqSeewVvlTVk3eENaSjtgeLYJzgUfg9n9Ax3LGtYj2TaD0seL1ulPrX58AAAD//wEAAP//1rAncZcBAAA=")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)