diff options
author | Jakob Borg <jakob@nym.se> | 2014-06-17 23:22:19 +0200 |
---|---|---|
committer | Jakob Borg <jakob@nym.se> | 2014-06-18 12:54:30 +0200 |
commit | b05fcbc9d72dda356989bad150ada80b690bea64 (patch) | |
tree | 839fbf711739859cd64486e238ae643a08cadbe6 | |
parent | d09c71b688e618c5af438138363b501ea7171dfa (diff) |
Simplify usage reporting config options (fixes #370)
-rw-r--r-- | auto/gui.files.go | 4 | ||||
-rw-r--r-- | cmd/syncthing/gui.go | 18 | ||||
-rw-r--r-- | cmd/syncthing/main.go | 6 | ||||
-rw-r--r-- | cmd/syncthing/usage_report.go | 5 | ||||
-rw-r--r-- | config/config.go | 15 | ||||
-rw-r--r-- | gui/app.js | 34 | ||||
-rw-r--r-- | gui/index.html | 12 | ||||
-rw-r--r-- | scanner/walk_test.go | 1 |
8 files changed, 49 insertions, 46 deletions
diff --git a/auto/gui.files.go b/auto/gui.files.go index c7b578dbdc..4cb8a81c56 100644 --- a/auto/gui.files.go +++ b/auto/gui.files.go @@ -18,7 +18,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["angular.min.js"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffec3cfd73dbb692bffbaf40756945393265277dbd77519c4eeaa4eff9a5493c71d2bb39d79da14448624d912a3fe2686cffefb70b80243e49da4ef2de9b394d1b4bc062b1582c16fb0160322147e9669b45cb5541bca31179b47ff03df9477091cec84f69b624411292b458d18cccd3a4c8a25959a459ee93e7714c58ab9c6434a7d9471afa3b80ed434e49ba20c52aca499e96d99c42c39012f8b94c3fd22ca121996d012d797dfc7e2f2fb631257134a709b42b564141e65035a3886a9196d07994403925bf1c1fbd7c73fa922ca298fa3b3b93dd3ff2384a0a32cbd24be8fe0929b2928e19915152d2eaf7262e73fc9fff26bb1368b98cd3591093074fc8228873000a9265190799f88d403bc312bee430de79319ceeec7c0c32926f93390c2b5992c3aa85bf4ec332a6deb0ae1b8ec9d9f968ca1a94593c0b00cd2119028b189e1ace074217d1d25b945010a509f11eac8a627392a51fa390662372b543e0a314fa215d04655ce4fea73c5bfc9d0650f62658b30efe67efe8f4ddcf7befd30b9a40471d6d8fd2f422a2555ba5e5cd4827b3c8d238a699373cad4a8f8a2c86814ab4e7f374038c645d56b4230b3619fdf82228b09bfd695dbaa4c5db57508453d294228f82ace00c66330194b08130ec484a42598739005cdd4cb54a60a759bede1ebfc0310e95d2042412919c9d5b901c273850853c51bfc9d2229da7f1d10ae61fe4b8265382a15906ebc3c49d539abcc43a931a10221a9ba46774935a468ac559014c0d5c7527c0f4885edab998501a3e6fb8c8aaf033ccd6c32764f882c2ccca8561948972e2c1f7915c8b628295c82fb9bc48cbf90a2b3e6c42987c5175a393713c771091d135a80a2b1d66554544985e26711a84564282bca059945fd4a4b03fa0634e618927cb1c34ce22cd2899a5699c931896079414d0469dc2a260c030b9acfc2a0a01f72f11204f00112c0910ab792638424e84b8100e419e8721c8784e73002cb61bd051c3827e2a86376309dbebe0d3294dc257b34d2ee17b5b16cb1457c63b5c4cbf44eb08b4f5abe8a7493e6a9025e57a463315dd3b401024c7090ce563109f4a28790da9aa88d78d4aac403b3651790b84274116806689dfd13f4b58fbf278810b04c60c0a2109d9b01b901684d08a2f4d8d7b88ed67d83708afe54c6c619f3cb9e93c889f27c909ac2b09232b262f22100cd8d3b64454b7d056217a9904b398866e5c0d1a144615c9dfd8ce65c5c2abfaa139453dfb13df3865a1c562d2943bdb7f38494e4c0a7809c1cad6c6efcca6cf9334d9aed33207f321c009627a8c6fa71644e7aa4a5b96d1a97d698a1527b3e9c371d7721c573b11b71954e2558e21b6e72598276074cc03b6177e5078d789f024c8f3cb340bdb914a5002f1a62969a5f6fd2ff22a45e3ecefefdf9f9c826d9511e848e36f1bb2e727c7afe8569eb49363c24b048a60135dc06f6d926a2b0176fdd3723e07c54f436f2469fd6841bc6f984d20974a131c2551e18da66a9537fc8f8416c0830bb6ad0e47b88f06b1375c81bd33d4a04d8ba3d9912a121afbe39664340ddb8940d87c5516b853b543da4c2195e81b93b93f07a0e24cceba8795d1a2cc12173bec13e2e2fad52c985f8459ba013980fe4072412e401a66699085c2b0be714c4adb006bc36601e35821706d74cab431c3d307845e65743f24c349be8585be061a7394bb3c97ac6db04b027d70aa804e6d22c0310219d85e2279c4ed3ecf4e9d405e4d90dcaef9fe76f6076c9f3ef02cf7640b70e4c35a7d19cc5712f2283426c6ca006659fe88680e8750401374c53ebc3b3e4ad79b3401058398fab2476203c37b1685e70627f451c9dfed344a667def9942772149d1c245e702ccf94b6f3456200ab4ce3d84d9ab9d9011999083fdfd7d15320a85a2aa3e92cf02edd5a1a1da049ea153ea6211d36658e9af82fced650256e08666c596b1da028f9fca6b9d1ab537464901e6861d0b768a93028a0aec1f20ff7550acfc75f0c9db1f93bf925dce4b06719cfcb42d68fe3e2dc066d8b37858061432af084726854acf695974750d665d9fbe153067e7370476c8f98a78d4c55a8329fb7d8760015467e3c6a621542f5557135d8b817b8fbdd781ee73dabbbb99eee84e22987a45992bea148bf5bd0337f674a1ae7a8483757f086e6c998474112560cad9b7163038928b04773b59bb2b3d98a861a2c07b8035f60d76e1c47c5aa49b0df46cc5ccc235055fc343d47c966e587dd3ba02677fcff6cffd22fd001d64473035a0cc1ff20a9897595e64dec168aa8e43343f240374fd60b31d90eb6bd2941e87311de863e1d50fa19a7883864af4684f683607fd0cc6b098988764f0ed68601dad60893420cb8c1fc560317ef9098f9245fa05663b44bf2dfb6c93adccd83082b971f62c16e2d065263568723ef14e4c9b2c5a07e098d93059d8a7cda12a145f7c22619f748dd8c25e1e5165fa9ae1dfef875599c2cdbc80510104ec165639c185c5bb98d800241aa63a5fd96eb48853b0d0a01bbb5ac498a0452d62f1d142b19d915a54f30067d9bc4403ff0dfc3d7e71ae0a1d02eabca9ca7db4ca62caba4526022b6c9b5aad5a37a44899fd33d4cc2f42318aed6e293414f170b1e83dc32ef4ed48c7d8a275862ce2c0865f6b630b6731d6f7efc1d7f4e2b6fc14cec96d98b6066b2f7773cb54d6ffb2ec32f5632f9e99cab093676edd8863c568ce57e698208c314d0493da74fb8f2df32db1fc9f36044d09b4ee53eea1fc4a3ba701895129658226656c1c640a888f34cb01b78dbe2fc99e3882bdf75777df1df30cdb6d881d1bdc51878b2358a34fc3125472be0a30c40595630c486fd56dd2b09270ac53c5dfc0210abc7e4c9365b102938b1c38465cdb072d0315d8c056760a83c830764a83b056446d4f136530705928f53c43f78ec63248cb185589a9ac7ff0697fb01b1198f67e631bb83ec5099704ad99a74d98c497be4cf14aee72b146a3561675f1a70f737a738686512145e9ed9c994cc054bba024201861441b05da6eeb6a254deb0b90b79bcad9ae92f2d8c653610590ec7fdb7061e8bd150f00c83830a02bc6d43712cae2ea7616e5c147d809441ebb62902139735c20e41fa76fdff8394b5e460b8d4a89426c906e0a96655db10303f9137235845e0a50667bef41be587a74b38945ae61f2479e26c39b1b3d52b14973236e077dc1d880a031ebc416b5e817a7e4b8262c957b8770a496b767c137b9ac3b3c699989dec29a9719fc93ae293f1c32e78703d439ab0f0c7c534b17fdb30ce2dc2ea7e356511f91eb6b8315fcd3811ec4d7815a15ec68e10992472ad361cc39a5a841aab310e4328a6382e97c744766b41e2bb04ba41e3433d3a4c9e7892a160370512760464e21300f67a8c91e36cd3bfa689e83e46f81fc4b5267f763ccc7c6db1da7a0f9bd548e3667d3167c9d6ac73a494eba7c9ee0142629d179aa429d16999fc3ea2fbce1187558b091d6dd27c9c0f8e483b659c30ec5168d8d8a467f29398e9d767d39c004d8c015aa6402e45c824a9e4c9d6e4762eeb6792a87f2139887ae0d453b4324eb8cd3cb0823d69774b6c1404ebd8e604d252cf5b4632e154db6476636a446034602923cd4a6a865d9994b4a476678772a6e98d2f7d19aa665e135bb96b94e2fc1004e2f7d5c5e08e24bbd545fb56ec62c5de390b6d6c3589c4af6afa6d945fef54e2265970529a5db63ffb3e5806f2b94373dc5ce327e34c3ac5e8866955768cb2c034341b478e0d34fa03242ef0aa6a66a6490825d00fb5e7e02fd6265a302764ae3054fd5690ea1e20f9ae36d08f3eb831ca0cbc8616db3d7c5fe1f6994807a2396e58ac02f819234f31f801c9f648c68c510c729abd8f619acbcc8f40215c6436f51f8a7749e215fa597433bae20ec40669bc52b995f78706e9b046ba0ffa6c74c6a4bcc3a957698afcfe890c6b4a09dcc367a344e64b08cae9d25dd472a6c7ce8e7d95bddb26a7dc8a692b414786d0f4dc120753a2445cb12ddb8b1f064b77220c19e8464752c83aaa1d62a7a0cf61e03d6076d4e8069a5588cff56a9a9fcf723747cc234a163124d776e295475acc3322a03aad68a7a4002781b0773ea4dc8046819427775c95e55a224322b23cee8a1560a360d7a5f231199646a067e988265da49449eaa4b82c7a8a0e2e1435ba45a863d8bcee538a2caa216b7b16adc8c786a800aca4d57023fb38c06173d22d8fc480860722c1d3ee24d99af3c735775a8103f4fb3c2ab82c74146efbad2fb2e0b7609a4c2e5b29de430ad53b5f5d66cb8f577faea55ecac75b94660afe8daed0e9297686c04e1991aa299f40c6acb83770b9165c4e09db6cf43a5a0a4596f664f5ffc42f08c48a40426c5fb72bb55890750d09fec291afcc08a291bae6824f5d1c120cf8ccb149dd2318f6990bdaccec7b45a49f20d0d85ce33956a113ddf2307e78cac4e0781b59b304a1c76dc228bc0ac8eb7e6b4e6452693da6ccbb717de2678d82ac23933a2e1df7a2b99d7ca74ac07f7b16e346a8911031e8767bf49fb084c05a71e8974ba367870fc76ae8d68a1045f9cae8dd406c4256639ef6aceae4cfb590617b68f7194d3307ebaba3aabf4cbb9799e59335a2da844fe0aadf9efbeb3f5d500f8181d664a6c9047981a34ce2fd948659078d942eac9b67f3adbbea274032d1eb6d3867747d6b97f01c036e9ebc2de5e7f7d4dfe7257b71605b4a79f83dd7e063f079c4043ec3be5fd4a91a92720bd7777ffbefe90d158691d33bf4fb8493b4c74851cc3441708ace26240d566d6d9b959a72e60c92630d770ade17912179d2f2b169b516cef2ea9b4c521efcb6e874883e006c115d7324f0421fae17ddd46c10ff7b8edf46ae7256b188bbe308d000eab6814730cc32a9bc5710ec72604d71a0063b666f5a84e10031e8c522944bd6022d4ce03ab1cd2b96119698f06af540d673b57a3b5b3a1379d08ee95576db8248a5f2e4702e53ec7651e3141776dcdb777b857e0bee4da7aae24c4b06bc1ea702d33e71e8ba970dd94473c8ae95bdb34da810d4fca738f468e302c47c77c328be1cc2a59147230268e5c079fc5764dde4b6d7d9e7095102a455a2cbba6728ce62b890b2df85d34854f735554d066ada1b22009d335bfeaeb3dde1f93c78f1cb1d9242a5cb9777be65a9c45baed897dd1cc7a64bfa3c75b5e6aaa9866bfb82441889bf22c796e3ade1d4489c300b724aabeb4ef24ca95b2ec486a8ac09512f877065e0c5c6f1a3fd7066f8bbcd880abfbfbf8f775b0f1dcabc389809d2bf5f46a79816bc3af2fd7a275ef847941e7311e22b259029309395e90925dc3cdaa6bb86415e015790aaa8c46ec319000a679037b3b580719e80a8ecfdc2001db2525974152e0e98020bf606f7994396080df6b7ed667be4aa339f5c94f6581d060ae0d0bd6c6860e0f19944b44b32661892b9ae0aa8d8218f390e5664cf214b1c00f44cd1eba209740b415191053606481bd5842c922cac025fd18c1c4f8e4bf5734114f92702c518e77c3726a270c1f4aa9f101e81adf1380e609be63929115fc939360998e913ac1091b1e76d11df3a33b462dee7f8cc45f91425c37e9bc5c033d3ea7b009fe7a3f3e81ff7ebff677a7bfe5bba3a611fcfaed10fef1ce7e9f9eef8efcdd07a3ebdfe1df09ec4b0f0e06962b564cda1a04ce7b562a2940dca0697488b75b9aab7a789965ba0e3eed8190b1aac7fbbb8fbedf7dfcc3beedce95eb287145dc4389254fe55ef608c7b9cbb2c87604f8c16db5bcdf55d69ad82e13f1f64af576a7a2ece9e09613513de8e06ae0b62428ef94f4ba98c675ca87779d9eac4be7395c72a7fe737ab4f6932c9a9c28869761ccb11eee35163b696d83b18efede63c1fcf31bca4972de39aa36487682e5973408ad4360b7c711e22e310097800e268893df721ed86f39336a6f29bf9cd036e3441bac3d16a79f8aae9fdf51d889af5ae99ecee20537c10fc9f7fbfff5c354ab8b32f0add30ccddb831f1efff57bcdbf6618fd9fe3609993ef003fc7f5b069371ab18080a5c2717d8d3fc163b8a2666702a582df8db41fc686388eb48b58fef04f87df5c5f614105ab4711f5ec1758ec5914b65fbcb3c6ff07fc16fea4c2703741752ad9da44ec103cf9f10ab08daa577a3c15113f718547aed8be50f72f59bb5e3026b38a1ce9907ac08e8bf37b9ccd3175b44305c0cc0aa05f0510689e0af0916dc6f60e0c175b347b269a0916ec485879388de13512c31a5edeaec1cc9b3eab9b027724deb0e883833781df2c54ecda2ab8edbd37089ec9084c1ad0c788e5c7d7d6525622b6844594ccd2fa2caba240820c212cd56d0fb343e6cdafe51e632930a39d2059cb9dc53cf0b2c653212379d43177ae2496aa54c42a15b0cd466b3ce60c923c2649a9101346cba8c8f1bd9a79157dc429c1a7a98c3baa02fd7e450bfbc3119043f9fa28fb1aa74bfe2598b1ae47f83e415d73b05f0589b067a2be850034825dca31ab43e3642a3c96c316314d40b6b0d50e277bc669637faeafc963b143b013ff65c17de4c1608c679b4fab24dce50a5fc1f2787d95c87c4ae00b5f670d4378ab8a784e099e1e4905398c123fc7971bbd4792f6115d3f3c141804088c9c7301fc7151c17b1f131c19b044a1a90eb3296b418028e75918c79ae70a4546799804d022501f29ace65b60935e534936653126ec1eba45285835f4fa73f489865e2d724aab46e76aef275604cda224608f72f5a547d78bac90096ead3b5d9bdf3e71de56e7589e81967ff43dd995ff18f904063939b4804e6dbdb673e9d1089dbe21f95b741bd2fad0740f625ef723a6958a7b74ffcadebd7c653dc317502b79c036c32e395b537cb3f45f48ced87d7ee94f0b3775d0fbc8d96d28eb43d27dc4ac172dad44dca3f78b2f2064e011b2e70eef22630af1d65b838e4e83f832d8e66ff8d38a5f43bead0f60c8e477513c5f95c9c5f18bcf4cac8d54f92a2cbb0d1264cc38e05c661775bd897f7530fee166b2d453450cb813ad2862c022aebe37ec9c342629272065ff7426f0e3ab93b3df26bffd763eb1f200cd283ebeca323a248f1dc2210980554006beef4fd0c9e308b9152423df7b341219c1c9a0db7a005b079388ff9e5c74de32ef62224373a670ede0bc73d5c53448eea79c6cefe431d026c0fead385deda226647e5af4917ac39485eaf8019936ba6432f8cbe34fc8f0483ac6203a174f9bd7c50558e7f93c2e43a386b9f6fa610771010f701f8aaf521737125aba86ee0a7cd8f329171ef4e30f07f8a4e98024cb3d16d6381ca801c93381d307cf6ef0ece984b57c563dbbdcc6a63289fe2c59fe5b62521b8ffe2ca131beb6bb7c8d9448a388a3e4e2498383b1614c68bc1e93a02832f009e74516eb428965fe0390b69c66b95f26f92a5a4837daf049ed5f83d87e7e86bd04d527e35e7d78620cd463198798ee626e0470db0acc2903cefe8a5051b1d5b8c54ef54c8da6523c4dcee2d703396f210e3359084e280e2427419cd120dcde893c160576d3d74d4394138ef0b372c728113256f3476d73631c736d156736a1182e8ac2ff97e7ee1953d9d52ed0760ad8f166d4fd2c185f8fee335c91d119237aa9ecaadfcf9eeffdefa3bdff3cbffacba39b0713e7239ff71979e7e87b21772d4486fdcb2d90ff030000ffff010000ffff57cfe20f64640000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec3c6b73db3892dffd2b30bacc88b265ca4e66e7f6a238531e27b3ebcdcb1527b9ab733c559408491c53a4c2876d95edff7edd0048e2c587ec24bb5b75aa9958021a8d46a3d1e86e34301a91a378b54e82f92223ced1803cdedbff99fcc3bb8827e4b73899132ff2499c2d6842a6719425c124cfe22475c9611812d62a25094d6972497d770bb07d4c298967245b042949e33c995268e853023fe7f1254d22ea93c91ad09237c71f76d36c1d521206531a41bb6ce165640a55138aa866710e9d07119453f2faf8e8e5dbd397641684d4ddda1a6dff998641949149125f41f74f4996e474c8880ca29c16bf57619ee2fffc37d91e41cb79184fbc903c7a4a665e98029017cdf3d04bc46f04daeae7f02585f14eb3fe786bebd24b48ba8ea630ac684e0e8a16ee32f6f3903afdb2ae3f2467e783316b9027e1c4033407a40f2c62784a3817089d0573679643411047c479b4c8b2d549125f063e4d06e4668bc04729747d3af3f2304bddeb3499fd9d7a50f6d65bb20efe67f7e8f4fdefbb1fe20b1a41472d6d8fe2f822a0455ba5e5dd4027334be230a489d33f2d4a8fb22484814ab4a7d378058c645d16b4230b5609bd7ce165d8cddeb82c9dd3ecdd2b28c229a94a91475e927106b399004ad84018762425a2acc314006eeec65a25b0d32c5fae8f5fe018fb4a6904128948cece2d488e231ca8429ea85f2571164fe3f06801f30f725c9229c1d02481f561e24e298d5e629d490d08110d4dd213ba8a2d23c5e22403a67a757527c0f4805ed9b91851ea1f565c6455f8e927cbfe53d27f416166e5423f48443971e0fb40ae4531c14ae4975c9ec5f97481151f573e4cbea8bad3c9389ed61091d025a80a2b1d665541841f5f4561ecf95642bc34a349905e94a4b03fa0634e618947f31434ce2c4e2899c47198921096079464d0469dc22c63c030b9acfc26f001f7eb0090478008960488d534111c2127425c08872087be0f329ed21400b3f50a74543fa3d759ff6e28617be35d9fd2c87f3559a512be7779368f7165bcc7c5f43a5806a0ad5f05bf8dd241852cca97139aa8e8de03022f3a8e6028975e782aa1e435a4a8224e3b2ab102edd844e506084fbcc403cd12bea75f7258fbf278810b04c60c0a21f2d9b02b900684d08a2f4d8d7b88ed77d83708afe54c6c609f3cb9f1d40b0fa3e804d6958491159317010806ec696b22aa1b682b10bd8cbc4948fd7a5c151a144615c9dfd8ce65c5c2abbaa139453dfb1bdf3865a1c5625295d7b6ff78129d9814f01282958d8ddf9b4d0fa3385a2fe33c05f3c1c309627a8c6fa71644e7aa4a9be7c1a97d698a1527b3e9e371db721c163b11b71954e2558e21b6c31ccc13303aa61edb0b3f2abc6b4578e2a5e9559cf8cd482528817855953452fbe1b5bc4ad138fbfb870f27a7605b25043ad2f8db84ecf0e4f8155dcb9376724c788940e1ad820bf8ad4d526925c0ae7f9a4fa7a0f8a9ef0c24ad1fcc88f303b309e45269828328c89cc158ad72faff11d10c7870c1b6d5fe00f7512f74fa0bb077fa1ab46971543b524142657f6c4846d5b09908844d1779863b5533a4cd145289be3399fbbb072acee46cfdb0129ae54954c70efb84d471fd66e24d2ffc245e811c407f20b92017200d93d84b7c6158dfd54c4ad3004bc36606e35820706974cab431c3d305844e6174ef90fe285dc3425f028d29ca5d9a4ad636d8259e3e385540c73611e018810c6c2f913ce0769f63a74e202f26486e577d7f37f913b64f1778963ab205387061adbef4a60b0979e01b13636500b32c7f4534077d28a011ba621fdf1f1fc5cb551c8182414c5dd923b181e13d0bfc738313faa8e4ef761a25b3bef34ca1bb10c568e1a27301e6fc9533182a10195ae70ec2ec964ec8808cc8fedede9e0a19f84251151fc96781f6ead0506d02cfd029ad6311d36658e92ebcf4dd550456e08a26d99ab1da028f9fc26b1d1bb577464906e6861d0b768a93028a0aec1f20ff8d972ddca577edec0dc95fc936e72583388e7e5b6734fd10676033ec5a3c2c030a9997f9039342a5e738cfdaba06b3ae4bdf0a586de7770476c8e98238b48eb50653f6ba0ec102a8cec69d4d43a85eaaae26da1603f71e3baf03dde7b4777737ded29d4430f5b23c55d42916eb7b076eecf14c5df50807ebfe00dcd83cf2e92c88c094b36f2d6070441711ee76b276577a3051c34481f7006bec07eca216f36916af56d0b315330bd7647c0df751f359ba61f555eb029cfd3ddb3b77b3f82374901cc1d48032dfe115302f93344b9cfdc1581d87687e407ae8fac166db23b7b7a42a3df643dad3c7c2ab77a09a38bd8a4af4684f683205fd0cc6b098981dd2fb71d0b38e56b0441a9065c68f42b018bffd8407d12cfe06b3eda3df967cb5c95666ac1fc0dcd4f62c1662bfce4caad0a47ce26b31ad9260e9816366c364619f3687aa507cf389847db26ec416f6f2882ad3d70cff5e37acca14aea6198c0a2060b7b0ca092e2cdec5c80620d130d6f9ca76a35918838506ddd8d522c6042d6a118b8f668aed8cd4a29a0738cbe6251ab86fe1eff18b7355e81050e74d51eea2551652d62d32115861dbd44ad5ba2259ccec9fbe667e118a51ecfa9642431107178bde33ec423f0e748c0d5aa7cf220e6cf8a536b67016637dff1e7c8d2f36e5a7704e3661da12acbdb49e5ba6b2fe976597a91f3bf1cc5486ad3cabd78d38568ce67c678e09c218d34430a949b7ffda30df12cbff6943d09440e33e553f944fb4751a901895522668d2894d0d9902e2922629e0b6d1f72dd91306b0f77eaaefbb659e61bbf5b163833bea7071044bf469d801957c5e0518c28cca3106a4b7e836aa584938d6b1e26fe010055e37a4d13c5b80c945f66b465cda070d0315d8c056ae150671c2d82a0dc25a11b51d4d945eafce4229e719baaf692c83348c519598c2fa079ff617bb1181c7de6f6d03d7a738e292a03573b40993f8d295294ece5d2ed668d0c8a236fe74614e67ce503fc8a428bd9d33a311986a17947804238c68a340db75595d706bb97ab72a3cece2241e011de51cd71540b2d3ad2370cbd3080c17d9aa0f617b5b8169439e83556bc384e1fa463200406e884160c187aed153168bb7b335f52e61f71067df05530d699be2a222ff387df7d64dd9816730d3a89428c406f12a6327b30b9664903e25377de8250305b8fb0164921da9ae56a1389f18fd99c651ffee4e8f6eace2d488f5415f30362068c83ab1453abac53639ae113bfebd4708533beb67013bb9ac3da4699989ce029ee609fc132f294f2899f2840275ceca24831f0ae1a25f722f4ced523e34857b406e6f8de1f34f334a90d8a12ae19a5e12b4e9ecc564a2059d5e204cce0ef292e2208f2c3c3c64a711a162bdc509f183947d37ecd0a675fad34fd6655caed36716f7539a267b2366e6ee596d5816cf7d0841a838362667775fb78c6b395d64a590ab200c092656a06338a1a50481108a43208dd1e6b4bbfcc890456314011015f503317363d4b336fb200e4189ac81e62b52265784781c1eaeb72c7da8125fa37525f91f3720a957db86c4d752e0f2936461fb2b36a709759a256e0a2a3373fa4354fcde4a5256d7922577ed828a5e8229c0348d8d8a4ae92b87495bcd9b4c0f4f1a7b753161261fb57a4b39905427b6e60474d303c19a1d4360ee9b5baf35594b56b4a757011e0d5cd1c90a5551b94c60c944ec8c6fcb5c099a146be2ce33da041ab0c690e4be36450dabca5c3c3a32c38d5671c3947e089634ce33a7daeacd1579059e467ce5e242421057eaa5f8aa753364eaaf46da1ab3de3895ec5f6d3b1407ddf71229bb2c4867e71d8c06db61fba64279d751ec2ce3477bd7eaee69ee4f81364f12b0ae448b472ebd0695e13b37303545238314ec02d8f7f21af48b958d0ad8290d67fc4c54f3bc15c7db1c6f45985b66cc802e2307a5735416bb7fc64104ea8d58962b02bf044ae2c47d04727c9230a2158f07a7ac60db57308d03d3dd56180fbd05fe172971245dc4577d3b2ecf6f41669bc51b995f98a1b88ebc25d07fd76126b525669d4a3bccf767b44f439ad156661b3d1aa92fb2a9a5b1a43d77c5c6876e2114abff5bac0fc912929702afeda02918a44e87a4685946016e2c3cab40c9fcb09ff6b23a7654ada1d62a3a0cf60103d6076d4e8069a5583ca646a929022547e82dfa71448724186f6d28546550c9322a03aad48a7ae407781b7a53ea8cc80868e9437765c96e51a29c1817469cd143a9146c1af4a1462232c9d40c3c6b85a53490803c5397040f0642c5ce8eed4840863d0bcee580adcaa2069fab685c8d786c800aca4da7013f93847a171d8e0a78ee0d60aa593a7cc4ab3c5d38e6ae5aa342dc143c58a788d27b09bdef4aefba2cd86d9b02579ded24c7c36b555b67cd865b7f6b80a30852362ed700ec155dbbdd43f2228d8d203c634334a38ea707f2e0eb85c83262f0439be7a15050d2ac57b3a72f7e217846c857029302aba9ddaac44c1ff4273b8a06cf0c3265a32eec4b5d7430c873e3d64aab744c43ea252f8b44a4462b49be0aa3d079a6522d8e2976c9fe3923abd54160ed468c921a3b6e96046056876b735ad32c9149adb6e5cd85b78ab8368a70ca8c68f8b7dc4aa6a5321deaa7285837183404e3014f8d67bf8abb084c01a7e69ed6ba3698a1bf996b235a2811975ad7466a03e212b2e48262ce6e4cfb590617b68f91336b183f6d5d9d15fae5dc4c1cd78c560b2a715088d67c1520b403b81852674aac970678066b248ad948659078ab45eac9b67fd6b67d45e90a5aec34d386977496a97b01c036e96bc3de5c7f7b4bfe725fb71605b4a39f83dd7e053f079c4043ec5be5fd4691a9a720bdf777ffbeff90d158691c33bfb8b98a5b4c74851cc3441708ace262409566d6d9b959a72e60c92630d770a9e1f969393a5f562c36a3d8de5d54688b03de97dd0e9106c10d821bae659e0a42f45b12ba8d821fee71dbe9d512534b188bbe308d000eab6814730cfde20890e3ec0f4d08ae3500c66ccdea519d2006cc40532944bd6022d412af550ee9dcb08cb4438357aa86b3253069ed6ce84d27827be5451b2e89e2579d2381729fe2320f98a0d76dcd9b3bdc0b705f526d3d171262d8b56075d42db3da3d16730e74531ef128a66f69d36899318e94503018d48461393ae693590c6756c9a290bd21a939ebe0b3d8acc93ba9adaf13ae1242a5488b65d754f295be93b8d08c5ffa53f8345545056dd6122af1223f5ef23bd5ce93bd2179f2b826361b05595dc282fdb85f247d6d7a354234b3de8d68e971c3db6305d3ec37c42408f12401cb38301def16a24406c5864495af23d412557764d972a82902574ae0bf36f062e07a5bf9b936785be4c5065c3c94807fdf782ba77e75d4226009bc8e5e2d9bf6eae8e5b3fa9a7c83d1881c37a441443460afaa78059e081322e834c4ec2e7303046c57945c79518687fb5e7ac11e45c953c000bf973c696aba88832975c96f7986d0608ef533d6c6860e7304f239a259123fc7154b7055065e88e78cf96a48d218b1c00f44cd5e0c215740b41519109361e4803dfd42c92c48c0e5bc0c80f12ef9ef058dc4db2e1c4b90e225bb94da09c317674a7c00bac48719a079840fc2246401ffa4c49bc743a44e70c28687bd1880e79f5b462dee6f8cc44f4821ae8b789a2f811e97535805779d5f9fc27f7fdcbadbe3cfe9f6a06a04bf3e1fc03fced91fe3f3ed81bbfd6870fb07fc3b827de7d17ecf72578d6d171582da0b6b2a29405caf6a7480d784aa3b8f782b68bcf4ae7741c858d593bdedc73f6f3ff945cf65c14f6d4e7641dc8ec49267722fbb84e3dc66a7c47604f8c16d337fd89de092d836137073a5b959aa98fdb8b7214dac031d5c0d6c4a82f2e04ba71b7e5ca77c7cdfeaa9d62b359e0f85cbe8b597cc51cbe002c46519e26f58dcb4f056397d44ecb4ed5686455214d3ca30d7984e7cd868e474aaaf45181e17bfa53c21a2f62e56b19fb18493d7b1e7db1228f8ad7a84b88fcb5e276fbd11e2e4b7bf7bf6dbdf8cda0dc59113da644b6883b587cef46cf1f25922859df8da97ee98cc5e708bf980fcbcf75fbf8cb5ba200157384ed01addffe5c95f7fd6dc6186d1fd3df4e629f909f0735c3b55bbc180f9ef968a9a6b7dfc6922c373343b132815fcf548bb61ac88e348db88e50f22b5b8b9e5d51ed4977ad04f3fac82659f047ef385446bb8bec75f27181518ee27a8b53ab3b4e85a044f7ed4034c9de2f5224745c413a430438aa9f9b27fc93875bc219914e448c9fb1e4ba3e7f75babf47d0c0a0b80891540bf2221d03c13e003db8cc95a4e148966cf4533c1822d092b8f7e31bcc639ae8697b7ab30f3a6cfcba6c01d89372c5850c31bcfad162a766d15dce6de2b04cf6504260de81284f2a3744be91021b444319483a0e55952046d041942588a5b306687ccf95eca3d86521c454bf858ca9d853c4eb2c4248e813cea90fb42124b552a42950ad8338325e67583240f49942bc4f8c13cc8527cc7675a040b714af0c92ee3eeae40bf57d0c2fe7004e440be56cbbe86f19c7ff126aceb01bedb50d6ecef15311dec99a86f44008d606672ccead038990a8fe528434823902d6cb5c5c99e70dad89fdb5bf244ec10ec56439e7197b6d71b62d2f169716676b5c0d7c11c5e5f9c3b3e23f085afb38a21bc55413ca704933d62410ea3c44df1454be7b1a47d44d73b070283008191732e80fb2c2a78ef43822303962834955131652d081025fd8471ac7ac6511c00f7230f5a78eae38dc57c0b6cd22b33d12acf8684ddcfb70805ab865e7f0faea9ef9422a7b4aa74aef6ae6441d024883cf65859577a74bdc80a99e096bab36ef3db23b5b7f83996e7a0e51fff4cb6e53f46f89f418e0e2ca0635bafcd5c7a3c401fae4ffe166c425a179a1e40cc9b6ec43452f180ee5fd9bb97aff227f8326c210fd8a6df26674b8a6fb9fe0bc9197be740fad3c04d1df42172b609655d487a889875a2a5918807f47ef10d840c3c42f60ce47d644c21de7a9bb2a6532fbcf2d6e95bfee4e4f7906febc32032f96d144f17797471fce22b136b2355be22cc2e6f7809330e3897d9056667e4deec0f7fb91bcdf5931d06dc8a561431601106dfedb74e1a93941390b27f3a1378b6e9e8ecf3e8f3e7f39195076846f1f11596d1017952231c92005805a4e7baee089d3c8e905b4132f2ddc703718037eab55b0f60ebe099dfbf27176b6fdfb73191a13953b8b67fdebaea42ea450f534eb6f7031968152fff512443d751e3333f2db8a44e3f66813a9ecfd244974c067f91fd29e91f495907a273f1e47b599c81759e4ec3dc376a986bafe72688fb7280fb407c95bab893d0d2257497e183a7cfb8f0a01f7fd0c3a75e7b249aefb2b0c6414f0d479e099c2e7876bde7cf46ace5f3e239ea2636e551f02567c7d512939a78f42587c6f80af1fc0d52228d220ca28ba7150ec68621a1e17248bc2c4bc0279c6649a80b2596b98f40da529aa46e1ea58b60265d40c3a7c63f79a13ddd85bd90d5e580bcf8f0732e508f79e8e3e915732380db56604e1970f6134205d95ae3164bc2191b4da5789a7ce85e0ee4bc81388c8023380f7fa7c40b13eaf9eb7b91c7a2c0f5f4b5d310a48423fcaadc314a848c95fc51dbdc1959a98de2cc2614c34581fffff2dc3e632abb9a05da4e01cb4646ddcf82f1e5e8bec28d169d31a297c2aefae3ec70f77f1feffee7f9cd5f1edf3d1ad53e7efa9091b78ebe13f2ba85c8b07fbb05f27f000000ffff010000fffffeee1f117c650000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["app.js"] = bs @@ -63,7 +63,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["favicon.png"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffec3dfb7bdc386ebfe7af60e6b61be76a699cc7e6ae8e3dad6367efdcdd3cbe38e9f5badfb61f47e2cc702d898a48d999737c7f7b0150efc78c3cb613dfedfe90782492200802200012d4defda33787effffaf6255b983098dcdbbbef38f70e55bc4ce47c61d8d6e143f678e7d153f69ffc544dd90b95cc198f7ca6cc4224cc539149e434352ad12e3b080246ad344b8416c999f0dd7b1fb4606ac6cc426aa6559a78025af982c1e35c9d8924123e9b2e01267b75fcded166190816484f44d0ce2cb8611e144dc5bd994aa15b19c14bc17e3c3e7cf9fae4259bc940b8f71c07d046ec59c0a3f9fe48442316cd1d1ec7fb23bd8c3ce83b9ad32bc257058148f6472779c9a1498211f302aef5fe082b058a9f8e10a4e0fee41e637ba1309c790b9e6861f647a999397f1c95050b6362477c4ce5d9fee8bf9d0f07cea10a636ee4341023a29088a0d5f1cb7de1cf45a55dc443b13f3a93e23c5689a9543d97be59ecfbe20cc8e0d0c3360c5c1ac903477b3c10fb8fdc9d16205f682f91b1912aaac06a55e3a959a8a4552390d129cc5a00148362e3a586490f212d1231db1fcdf8193eba311072720f1b186902312988c83eb38b0b9ce4d730b9afa1a7ad8797977b635babe8c0029b2a65b449783cf6b41e174f6e282317de8c323c9015f442086331b4ac6196310cc2884f061b53096353e52fd905fd642ce6be0f083953658c0a77d91f76e24fcfb3b2190cda99f15006cb5d36fab308ce84911e67af452a46dbac78b1cd0e12a0f636d33cd20eb0b29c591097f7e84f1afcebe2bba2c7902773193946c5bbec91fb9d086b755d44d60955a474cc81fb2fba707925a2406db3572ae21efc3d549156c090db6c7408322341d45e8b73c0b000d3e88203b32177fb2837fec410eb9a6482acd32e457af597ce6042fa4b0bc8fe4ac89da50564bfa0c25425be482ced221535c615a8b96a907997ed3cafcf74e50d8171be2b273c565aa244ec224f814c9e353b90da389172a6292805537445af89e11c64388b5aa3210c2c48c3a868e34b1d071ce65246c0ebc29906ca3bcdf100d6b6920cfc98f347c138a4338175ca8229f74ee7096a3cec452580fe7cbaf5f8c9b36df6f8e90efef7e8e1f33a0513eecb54efb22795c1e7f479147f624fcbf739211fc3ebc7f9ebcbe6b880cd22d7e7a0381a7c1e881960bb53327a6d788f76cad7c4f93c9073a43f0ef2f97a5ae504ce15719bbe3817ecbe0c516bf2c8744802ac1145b3f38534c22199c1a6e7a0686adae05c58ea3fddd9e984e4b7148b1dff63502bebb0f05d1df220706a54ec45286bfc1fa1f025675b21ff94d1f40fcffe107f7a5800c8e40a96d818d404b0f4c4bea94a5f5199b1f1ef81f761a1358cb342d73258c90caa6de1cedddda22efb3d1025012d33858595c50ba0b406a162300875ce70aaa689e0a71ad7e14041f344c489823601b0e058c30a09abf9b9348b2a44cb4f601ffc7e5cbc6e10210132e5b37259b0e3de98441056e2b15d8aefedd10869fd013385bd5731884ac2d000c077113f2bd6717e8625f60faa97fca72f663c0d60b9053b40503d39e7b468dab564cf9705105c23390c3ac9ca701502a9a8f7e14c13308846933d19cef312d45b23a6130f9731079f9c478fff48ab27b3abfbe8c963585b89f7eceff184158be91eb14d0e6c217d50a0ce2758edeafddb852535027aff0cc482a249e72a4ce026598d7c24695019474e9dca4f12d862e0b482e70dfc44c5be3a8f2aa550ceb3e5fd77a3663da0ff7c8ed6100a42f65085f2d297e6db68aae3e77bd382f6c04bd0fdde780aff78ada312f3a2835044690d1bc27752e064ad3fb02b4fc102f2fd7722565b0f017a959cf360192fd0ca61c52f67e1e3cc5ac27d2b42c0f0c0f71936877545254b446d6f0c3d0dee1a676650d730fc736149d0e81e41f4765c90469e491f39f70ae881e231275631e841387a6adec02f6f7e45c2c8e174f998a0ffd0ec7601fae9f8e856a8a217a941261b849d9acd5aa8d9e657a408a877c31333905566507dd1e8f89d85d0d5efde380d2a925d292d4bf6c6402cb2bcc7a011ac82edd18db63e6ae4ef65a20da8d6f36da6a260c9c099388f989cb14878426b9e2c9fb30c2f76ce930897a04c7b67e081021248711fe0cfe4fc3842a5582814005caae21a328113faa063abfaaa520e441101a3ff9dacdbbaee6ad67570c1a15a7b8b27f512726946937c14af85f0850f2bd4934941b17eb0b87e35f5543c79bf40a718c79b26b416b105d7e0f40ab0c2f8193ac8e08e450a56700f4c580e0adf2d170b16a648f20c1d5cacb34ae42947e2bc0edadd1bc77556588b349aed953530ab063819c0d43a64f6a198a7a9019fdd448e0ee94fb6e6b218acec6c5db91d4eb7683410adf249207832939f461d73557f517bac3c643f5b1c2fe66900f6063068839f6b9c9bc3c386e52242ee06db4223056dcb8725844e2e7fb68ac91d741be211933e1236eb410abd9add33d1b8b8c0268758b085bfdce323b01f68aee051706361a2f5877f7f04b471d67ac9dd10a55a3da8d923598d6a6459d40c07a043c0639ddb1331580a18c8f85d6dbcb931822f6160df48f0423fc160dae01b56dd3a3380592ab94732111e4ddf67463193b7dc2c2e2fd7812f6580550c3b0bf3c4709356495f37d9aaccca5bd4440d549f89268b679393b346952af589c809cc0a4ab77a1ba2d99a159b7e4bf75c58dfa9da84350209d93338323246dbb7030ac2b1be42571996267d4558b858af890c6f9a3e1581464b0480ace8c1af19f199ad9d71d6f11185cefc5ee4c7fdd85f7f60d69973542ca2c600bfa792eb8cac90996b0d30b71142b003839f3292fdeccae88c07b28f1f068f3fb30f1c2de74d02bc4c12b5e9f8bb91fd9a13eda910dca6a6838176c5225191fc1b990bd798ed0e6df6b5863a0fd4b4e932fc09def1a0e6cbddc4c4ce09ecf732101a16061e9cf3a57e9d8653915c5e3269a0eb6dd6d3e8c5d250a3a98c388ac88baf47b0850a9bf4fa5179b740ae00a15e915ad4e60e11cb0b54ea3be8e3058a37e3056fc074573332d737a2587f7ddea30723f0482c45276ca7eec8aa7374570a91cc8da48e7929810c9e166cd2312b2d4ba53204a2ecba51ecefc330263b79bf3bec459f5954c0fd6aac8071ec0603bce21abca7eb0a4e6ffd0615897eefc0e27e03eef768f257a1d711ab01e07e03c26b7577a99dc25225bc53d194b9e379a412c1de8a24945ac32aa66f9fe6b64fec526f4ef61a90bb4c790af53b3c68590f760be02fd22c365c1f08b2a6002d926463b3014afa1c0028a2fd920eb7aae531d1eb6effaddb7de13d3190389121a8c4514fd8b51cf080280898e69e0c9ac62940e9d1b6bd48f93c9a8b64d4a93cd8b7dfb2a12b0b1ee448a42f3a5696f5421c77ad9a194076b8401475e7c0bac5a3cbeddd20d8530dd5606cba12a4a1d9bfb1284d04c08785678aadab4a3c065b1fcee61892f929dff8d97af8f3dd09cad8e1e5d1187c7210cf217b2f551b14cc8d28dfd3cac64caae19a7190129f35111020f06f41907610a415893d78c53e18195ccf7bd44b30994217fedc0d03df707daa1b233d7cfbe1e646eac5292cfa1e484cc3dc86c708bce88407bb8f2e2fffe58efa3847d96bf68e1bb12125a0934878484afdd303a30c0f1e6094641a230f8402d8dcbbbcc4a7ad9ebac711391feff1b1ca360fbf36d13a17b80ff1ad104ca56638c5c035bd7992e5b644c6d980f2411429b0d4c59b1fd8fd7d9682fe9ac9a857650d262e1ed95aa8a419a3cb7b6327780075b368dd5aa33ddf4dc6733dd450a71eee6f8e568d7e347943a79d867a06ad4e1ad6dafd9e4e66b321bd7c4d6dda8c9cff9748f4e63af4ccb6becb8ec2a65e015973b9b9735dc7e0dae6f2a01d44c29676104b33adcf62a543e438467d97b6113b2cd6ebee1f36cff274c0e8b46f37dd4c440859f8bd6a2cdfd266629344bf6d26d60a87840d65d40c1b1ef83e0c6eb3c095650084509bfe7fc68da61e4eff5598c9d9805dd4a0764f71adedd76cf26b369a9bb418623b37dbdc8a097dc7ec2b1c3340b8b67cfd6668dd445cb2fc696393e3fa91337c45c71474f7b94a8165f6e0961b88686e1636967bf70e58be56467ae25a072bab66270c1c4dcecaf8719ae960fcc505bc75dfcb508004832d2876477fde0dc35df0e72e2f77f3e3f360a1cd1229223f585a93151b11a949226eff5065c5d8eb3e5f59656a3ae9681961d8b9e5a6fdf1e6872f7b9cb2c6d3c5e1e222b5035fbfa08cbe61191ff991d3ec1190147e9612583595efb519bd95f2d1972851cf8da8a89eac0a197599bec11cd1dd310c517b2a4db4708bbc543712663c9a9ca4316612b131fb5e2569d83eb43da80b0d7dcca559a453178caeb1c78370312eba1a2702264ce36ec38fc0e5dab077f6c586bdad189007f0e72a598e7de5a568fc65293647d5c7db19a4d43ac521be48bbb2106ea007982c9bc77cd89187b1fafc3c6d26812fa89253ab8970870d0c879c9d0b8fcad621f92de4df569d715f74f02d153abee4819a776a705b21cbfaedd1e2b60e6a66903c1e50ce18fe9f479e6a02be785a6fd6e576af553be2131486c40df50377353087850566d7b69a9e593ced51335d636b2d137b71bdabf258bd16a007f13cfd543034e8b7194c17062c28779db3385160b28494eec696c011ec18689bc0d4b1d262746bc0df8161b904d8df2e4410c8220fd1621e0fd69635b5698f92d3f9774a06e8e4a7a4a87017b8494633750bbcd4cc0d68903ea7c017611ea959497397bd2535cb162af06f7aeef3f4a29e99cf9397eec2bce741f29b9ffa6ad6557d4672eae09d0c8130e28bcc7e99bd03dd93f2706f6aba8f8f7a265afa1f37582a2c3027b899d9be85996d64fbd51ad3b18c6330e58c9c49cf264e7d1bfa5c2f9e57c3a9e5b1887a44f5daf35fa9720e42cdf03f34c91b173ed023eeed22812e2ec225cce167e62dd2e8d49ef46f9ace98489c1f8a84cac5ac5a1836599e4125072c94701a7170446daef1c764dc863f1a5f61901d5ec9a044afc203a1503a588578f02e033a28ad2b5467cd03c7878142d3b4e9845c5562884bd0c7efb5b6f200c09d131fcc4258a8f3fdd17d441134cbcb4fe0b9b656f15cb2cadce02a6337400d8284918c0e501bc8c84c2561966a8f3f47d92d34289c2f694e56ecfb6083fca41479b6f4f6e201a85787ace7077877400ec88d2826e77e93a556e0f9b58e525f2666d9dec6d90bf8540478fb81450ec46e62f5cb1198f758d66a21a318d332b3cdd8165dcb81a208e7fb241571a6e16537123574c6a872cf0d8d9d0ee281064813dca442c4b210245e96f3319578e89246ed6027d2074922f43ab75af250500f27acd06514426de1b0529b51af710e1b8c9fd82ab0aeed9dea81d88ea9b3d3faf973d7b4c6098d0230c464dac8ce1c5aefa4331999edf6262956bb496a44ac3e6159023928302bd8ca16db6bae109ccb4e90029a6ebfc235067f025045372e81bad8927478d77fe8760538f3a1f5c8f3e42f0b3017ec0523e05b60d62e76bacd4e858811d75042b7741fd69e0827749b5644f2094f3603184606ed810f6aa86b3c44699472fb77ff7adeaf990c1240b760be15c2569f129804cc64066ca7018f4efbf11ad43fb1c46b62f9f528102b00ae392abe129ad2aa03a54eadf8b8ecd86036671af84450f6dd63baf88b7bc845b84908f3e3e18e23cd1b667680550965962f223ab4a5b7ad53a85b0c3315d42863999eb1376289dd91e36e35b952abf150643a0dcda2d55a2d0e00f505e5fbed8ffeacc2fc384da6c81054971a1ba4b7b83dd6d9ad9f3a35c589bd4520d206d649a479a6997321f68254dbf9c18dc06686fb4d1190db1d598c2d1de43faf40457f0964931e91050c24dceff0bb343ae6bb58b30f495d76ba29bd0b5c4f4c7245babf24dd89dbb79c6911831818109f8e3b68caf541c6bb18c7cc4fed16e863f06465c38c3c7943d0dcb148c87ae0a9511822f218451b810b97f6464191831f30e37b6384f5052ce162a3a99277c5cf4476bd497df22beaea9b227bf5eaa1fa1380df15acbf6b967b8951b705821a3c5f194f44301badc19c8292f65209bc37a14a72900270f607df2903ab6bda3ce07b4420aeef7f6066c77aff036bfd33f81fd534b71bf142fa00de9c2f82392b6b7d91eac6685779d7066957bd213e4d89908b3f1b3e4d47698f4f437d5716305b1dafaea95d54d0b98251dbccc329a8848b527d4dcbb6737443b1b5a637bf73a2c7fd59b38ebdb35945155f278de4c7148f7f816c41f598a30d16ed8fc6fffb1377fe76e0fccf8ef36fceffb93f5f3cda7ef6f4f29b71efc247e31ce69e50d566de5f63260a17a5a3ac74514ef0ba10a0898d5c810e9bd9ad0556dc60b274d9abcca8c7f71aa600ed7a7b2b9c3576e89862aff93c04596b425b5292fe212b39a97247e15ad85a37d05dd563e863e52e4486fa0dc331c998e6aa8814ce96bdf5a53a8d5bcf9e96de02993c0158270fbb1d86eddc5b2007016719ffed61b87302acbb37a65f357851b05c31ee9611645f761fa0b99e4ac2ab6e5629255b7e05b5840d6a8a095f5c45351180ba72fafbf8a8544fb902b2f5365441c5f525a526fa027ac512b34fb3d8d252b7e0335acf7575920705e8ea04b4e8016591b8ec2f12340a30b39708b2ede58c49533ac60215b8cb50088c04aa567c61cba87f2fd8d4c656523c51cb752e1c788d34ea365bb948772258182ba2d71b8bb21dfa5ab55261c6963cc748ade1aa65b8880d39edb59185f16cb881d139822a444c9e9faa4f7d3cd92b7d546a25d00a4d01a94770caeb04aad79ed99b11bafb5e21fadd1aad4fdc6cbe3246eae2043c3a0fb97c96a8105919338b5908a62f8a4719ea03d58c17ee352be481371b73a320d279263e1a33f70aa1d326f74fb3b5baed9fae18c89d9fccda2505ac7dd7c21798508c0d64ddb1a934767eb3f82b3bc7502a86f470bd45ed934da4cbe85b0411fbfee03d7d39c06aa38ee8c10aacae323b8d2d058d861f228ab7235008ab2f7cd4eca83623d53c9a354934754c6e64f23578c52843d4211d87cecf428f5a39dadd092c37c90b27848dbde812114219a40b24ecf7262a8a1e03b25798e8ee97ff24da584b3c0b8172941d0ca71d08468255bef9627a1903483ece1c1ebdc5186e18e36e964584ae1ae79901e16a93bfceed0e7b5b9d9579986eb4ff7c34bc6d00883e2d529e4cbc210b194d91b5f41c624adb863f0811f719d3d51a03cde9b2c96882ffe753ba52d954cde90a007b84a8f2bcc270b6decc6a9eb3400a5b2d94e0b23fba6ddfbc4ac32e2bba5aded846b439f8b0980397951c09ac8adb72dbb80ad94fd06c62c156bb5d69c3b678a0895c8158e99a6685e859de84e3dcc615a66e3d9a7f55a9c5897631b961780c0e8ca348e4386f686b6f606c373700cabdf0be2dd91abcf6fe6cb9b874edd2e292548bb3e19140f28ed04c94152744d2b23517647e4e295134ca823be8782d49477a787c10ac4cfc9ac999a07925c286dc780b70d3c0270b96456b0c135908f77a29f2a53740b22bf7eb71c20afbfcb601828bc635373c067fd7e036373cf24f00f49d48cd8aefdc6e47d71644f939831bde7bf8927180aad7907ff70594553111bd96697e9985ade82273e2eef4038c913dc055b45562d79d072b6d586ba65c5ce48df1165cba0b277ba60f9961746885c59b192cc84f0d40ab4c94b22a3e67f712e4c60a5d92ef62da05547813db7ccf12f4cfabcd945ee3b7cf8deb24ec54a96035f1fa1c8016f9569168859b702d2a6ce21f7c29f7ab4708e6a93cb93d39e82c8b013520b0ff8f2f257ffa70fc2b9790ab506043ef791503f2589e8ae51a7ab407be557c71664d1a9f199fed387f741e3d75a02707bad2e3274fbe1b4d3e683ea7d4b787abf96fd809f92c31bf9fac28462367d473ba34ebebeadf23a999a8c21cbc3dfe412cb75a98803df5271189847719476b6770e3dd81af7d62e94a1f82fa8735c9af6adc12e793f396981e0337fdea79381b675d1dd077fe0e22152d4395ea6cb4ef68b4c00bff7e3d33b89a3065cfe37ac932c6285d5aa52a7e2818f7537c2e83251dc8adbace09f74ee948224c791c708342a2b7a92dd3f26fd9795b1ec745580440cc8aedd004bba32bd540e211b0dd1cf03183b3d8ce891315125e748c9742c9d934f139979564ae7a2a5763787c3e4fc49cb655f1602aba785eb613954e41cec061e7673046ba95080f76f3460a32a2d94a145f51880ab90fb72b895d1914b1247b9b08fc4c71fda34d9502b60ff392e2e673f65ce59b0e998b8106952053d9417923837d7f8413f599fda2edf56ef9770ca1fd17d08bd53bfdf2eff7c19bd87c78b7994ea45bc1375589e5dd7f85c7efe13d7f0391e9d48978c3f8b5d3abe8fb67763fad379b1dabdc29a5383805b9f2f906d04440b56b47027aaf24cbae206b5e50d6689d541d9919ba30397951a222096f39c823be3ca014f4ad59eb6ebdf2a69ff2fbb40378e8e202a11ee369a69ff8cfe88e542e672efab365ed2b82b057222a5adb334a03b01e8dfd8d972771d0fbf4babb75f5e4b8bd07a58d7ea65666ee09ac0574b50df5404fb5bb8409f1663fcdcb8b5af712fdaa1228f1a7fda6bc4d2f0515841fb9a3efb4ff62a387543a6956fce5632a92a5f3d8dd719facaf5d7e0efe97e6d7e057b68335be5101c64a174c818c9a107c92ff070000ffff010000ffff6e7e4beddc800000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec3d6977dc3872dffd2be0dec958de886cf918ef46963a9125cfae32e3e35976369b79933c3489eec68824680294dc2b6b7f7baa0abc8f6eaa25d9da9df960ab490085425da82a1cdcbb7ff4e6f0fd5fdfbe640b1306937b7bf71de7dea18a97899c2f0cdb3a7cc81eef3c7acafe939faa297ba19239e391cf94598884792a32899ca64625da650741c0a8956689d0223913be7bef83164ccd985948cdb44a134f402b5f30789cab339144c267d325c064af8edf3bda2c03c102e98908da990537cc83a2a9b8375329742b237829d88fc7872f5f9fbc64331908f79ee300da883d0b7834df1f8968c4a2b9c3e3787fa49791077d47737a45f8aa2010c9fee8242f39344930625ec0b5de1f61a540f1d3118214dc9fdc636c2f1486336fc1132dccfe283533e78fa3b260614cec888fa93cdb1ffdb7f3e1c0395461cc8d9c066244141211b43a7eb92ffcb9a8b48b7828f64767529cc72a3195aae7d2378b7d5f9c01191c7ad886814b2379e0688f0762ff91bbd302e40bed25323652451558ad6a3c350b95b46a04323a05ae05403128365e6a98f410d22211b3fdd18c9fe1a31b032127f7b081912610938288ec33bbb84026bf06e6be869eb61e5e5eee8d6dada2030b6caa94d126e1f1d8d37a5c3cb9a18c5c7833caf04051d00b218cc5d08a8659c63008233e196c4c258c4d95bf6417f493b198fb3e20e44c95312adc657fd8893f3dcfca66306867c643192c77d9e8cf223813467a9cbd16a9186db3e2c5363b4880dadb4cf3483b20ca7266415cdea33f69f0af8bef8a1e439ecc65e41815efb247ee7722acd5751159275491d23107e9bfe8c2e5958802b5cd5ea9887bf0f750455a81406eb3d121e88c04557b2dce01c3024ca30b0ec286d2eda3def81343a26b92098a4ebb14e9d55f3a0386f4971690fd95903b4b0bc87e4185a94a7c9158da452a6a8c2b5073d520f32edb795ee774e50d8171be2b191e2b2d51237651a64027cf9a1d486d9c4839d3148c8229baa2d724700e0a9c45add1100616a46154b4f1a58e030ebc9411c8ba70a681f24e733c40b4ad26833ce6f251080ed94c109db260cabdd37982160f7b5109a03f9f6e3d7ef26c9b3d7eba83ff3d7af8bc4ec184fb32d5bbec4965f0397d1ec59fd8d3f27d4ec8c7f0fa71fefab2392e10b3c8f539188e869c076206d8ee94825e1bdea39df235493e0fe41ce98f837cbe9e5639817343dca62ff282dd97215a4d1e990e4d8039a26876be904638a433d8f41c0c4dcd1a9c0b4bfda73b3b9d90fc9661b1e37f0c66651d16beab431e044e8d8abd08658dff2314bee46c2be49f329afee1d91fe24f0f0b00995ec1141b839900919ed83755ed2b2a3336fe3dc83e4cb4867156d85a06339941b32ddcb9bb5bd465bf07a2246065a630b1b2780194d6a0540c06a1ce19b26a9a087eaa711e0e14344f449c28681380088e35cc90309b9f4bb3a842b4f204fec1efc7c5eb0611122053ce95cb421cf7c6a48230138fed547c6f8f4648f30fb829ecbd8a415512860e00be8bf859318ff3332cb17fd0bce43f7d31e36900d32df80182eac939a749d3ce257bbe2c80e01cc961d0495686b3106845bd0f679a8043349aecc9709e97a0dd1a319d78388d39f8e43c7afc479a3d999ddd474f1ec3dc4ab2677f8f27ac984cf7486c72600be98301753ec16c57efdf4e2ca911d0fb672016144d3a67610237c96ae4234983ca3872ea547e92c21603a7193c6fe0272af6d579542985729e4defbf1b35eb01fde773f4865011b2872a9497be34df46531d3fdf9b16b4075982eef7c653f8c76b1d9598171d84224a6bd810be930227ebfd815f790a1e90efbf13b1da7a08d0abe49c07cb78815e0e2b7e390b1f396b09f7ad0801c303df67d81ce615952c11b5bd31f434b86be4cca0ae61f8e7c292a0d13d82e8edb8208d3c933e4aee15d003c3634eac61d08370f4d4bc815fdefc8a8491c3e9f231c1f8a1d9ed02ecd3f1d1ad50452f52834236083b359bb550b3cdaf481130ef862766a0a8cca0faa2d1f13b0ba1abdfbd711a5434bb525a96ec8d8158e4798fc1225803db631b6d7db4c8dfcb441b30ade7db4c45c1924130711e31396391f084d63c593e67195eec9c27114e4199f5cec003052490e23ec09fc9f9718446b1302800b834c535640227f4c1c656ed55a51c88220246ff3b59b775dbd5acebe08443b5f6164fea2514d28c26f9285e0be10b1f66a827938262fd6071fe6adaa978f27e8141318e374d682e620bae21e815e085f1330c90211c8b14cce01eb8b01c0cbe5b4e162c4c91e4193a3859679528528ec4791db4bb378eeba2b0166974db2b7360560d703280a90dc8ec43c1a7a98198dd448e0ee94f36e7b218bcec6c5eb91d49b7683410adca49207832939f461dbcaabfa83d561eb29f2d8917f334007f0304b421cf35c9cde161c37212a170836da19382bee5c31242a7943f5b25e40e860df188491f099bf520855e2dee996a5c5c6093432cd8c25feef111f80fc42b7814dc5898e8fde1df1f016de45a2fb91baa54ab07357b34ab518d3c8b9ae300740878ac737f22064f011319bfab8d377746f0250cec1b0951e827184c1b7cc3ab5be706304b25f74826c223f67d66943379cbcde2f2721df8520758c5b1b3304f0c376995f47597ad2aacbc454db440754e34453c634e2e1a55aad41991139815946ef536c4b2352b36e3966e5ed8d8a9da84351209d93304323246dfb7030ac2b1b142571996267d4558b8586f890c6fba3e1585464f0480ace8c1af39f199af9d49d6f111a5cefc5ee4c7fdd85f7f60369873542ca2c600bfa792eb8cacd0996b0d30f71142f003839f3292fdeccae88c07b24f1e068f3ff30f1c2de74d02bc4c12b5e9f8bb91fd9a8cf65408615333c040bf6291a848fe8ddc856b70bbc39a7dada1ce03356d860c7f82773ca8c57237c1d83981fd5e0642c3c4c08373bed4afd3702a92cb4b260d74bdcd7a1abd581a6a349511471579f1f508b65061935e3f2aef16c81520d42b528bdadc216279814a7d0763bc40f166bee00db8ee6a46eefa4614ebafcf7bec60041189a5e884edd40359758ee14aa192b993d4c19712c860b660930eaeb43c95ca1088b2eb46b1bf0fc398ece4fdeeb0177d6e5101f7ab8902e6b11b02f08a6b889eaeab38bdf51b5424fabd038ffb0d84dfa3c95f855e47ac0680fb0d08afd5dda5760a5395f04e4553e78ee7914a047b2b92506a0db398be7d9adb3eb14bbd39d96b40ee32e529d5eff0a0e53dd82580bf48b3d8707e20c89a12b448928ddd0628e90b00a088d64b3ac2aa56c444afbbe3b7eef085f7e440e244866012473d69d772c003b220e09a7b32683aa700a5c7daf622e5f3682e9251a7f160df7ecb86ce2cb8912391bee89859d62b71dc356b6600d9e10251d49d03eb568faeb07783644f355583b9e94a9286b87f63599a08800f4bcf144b57957c0cb63e9ccd3125f353bef0b3f5f0e7bb9394b1c3cbb331f8e4209e43d65eaa3e28b81b51bea6958d994cc335f320253e6b322040e0df9220ed24482b137bf08a7d3032b85ef4a897e032852efcb91b0ebee1fa5437467af8f6c3cd8dd48b5398f43dd09886bb0d8f1144d1090f761f5d5efecb1d8d718eb2d7ec1d3762434a402791f09094faa70746191e3cc02cc9344619080588b97779894f5b3d758f230a3edee363556c1e7e6da2754e701fe25b21984acd708a41687af324cb7d894cb201e5832852e0a98b373fb0fbfb2c05fb359351afc91a4c5cdcb2b55049334797f7c64e7003ea66d9bab54e7bbe9a8cfb7aa8a14e3d5cdf1cad1afd68f286763b0d8d0c5a9d34bcb5fb3d9dcc66437af99ad6b49939ff2f91e8cd6de8996d7d9703854da302f2e67277e7ba81c1b5dde5412b88842dad20966e5a9fc74a9bc8718cfa2e2d237678acd75d3f6ceee5e980d1e9df6eba988810b2f47bd559bea5c5c426897e5b4cac150e491bcaa899363cf07d18dc66892b2b0008a1c6fe7fc685a61e49ff55b8c9d9805db4a0764d71adefd76cf26b769a9bb418e23b37dbdc8a0b7dc7fc2b1c3340b8b67efde668dd445eb2fc697393e3fa96337c45db1474f7be4a816576e3961b88686e1636977bf73658be56467ae25a1b2bab6e270c1c5dcecaf891cdb431fee202debaef65284083c11714bba33fef86e12ec4739797bbf9f679f0d0668914911f2cadcb8a8d88d4a411b7bfa9b2e2ec75efafac0a35ed74b482306cdf72d3ff78f3c397dd4e5993e962737171b4035fbfa0137dc34e7ce45b4eb3474052f8d991c0aaab7caf2de8ad231f7d0725ea67232aa627ab424e5d666ff08ce8ee1886a83d95265ab8c5b9543712663c9a9ca4319e246263f6bd4ad2b0bd697b50171afa984bb348a72e385d638f07e1625c74354e04304ce36ac38f20e5dab077f6c586bdad189007f0e72a598e7de5a5e8fc65476c8eaa8fb73348a9758a437c91769d42b8811e8059f61cf361c7398cd5fbe76931096241959c5a4b842b6ce038e4e25c4454b60ee96fa1ffb6ea8cfba2436ea9d0f1250fd4bcd382db0ad9a9df1e2b6eeba06506cde3019d19c3fff3cc534dc1174febcdbac2eeb566477c82c290a4a1bee1ae06e6b0f0c0ecdc56b3338ba73d66a66b6cad69622fae77556eabd702ec20eea79f0a860efd36037661c282ceae7316270a5c96908ebbb12548043b06da26c03a567a8c6e0df83b702c9700fbdb850802599c43b498c783ad65cd6cdaade4b4ff9d0e0374ca535254b80bd224a399ba05596a9e0d68903ea7c017111ea959497397bd2533cb162af06f9af7f9f1a21ecee78797ee02dff324f9cdb3be7aeaaace919c3a782743208cf822dc2f4fef40f7643cdc9b62f7f1510fa3a5ff7183a9c20273829be1f62d70b671daafd698b6651c832b67e44c7af6e0d4b7a1cff5e279359d5a6e8ba86754afcdff4a9573506a86ffa14bdeb8f0811e716d17097471112e81879f99b748a353bbd3bfe93ae341e27c5324542eb86a61d8c3f20c2a39e0a184d38843206acf1a7f4cc66df8a3f11506d911950c3ae8554420944a07af1037de6540071deb0ad55973c3f161a0d0356d062157d51892128cf17bbdad3c0170e7d4074f212cd4f9fee83ea20896e5e527885c5bb378ae59e5d9e0aa6037400d8284998c0e501be8c84c256176d41e7f8eb25b6850395f124f56acfb60837ca71445b6f4f6e201985787bce7077877400ec88d2827e77e931dadc0fd6b1da5be4cccb2bd8cb317f0a908f0f6038b1ca8ddc4da972370efb1acd54246311ecbcc16635b742d078a2a9caf9354d4998697dd48d4b019a3ca3d373476da880716204d70910a11cb52907859cec754e2a64b1ab5839d481f3489d0eb5c6ac953413d92b0c296510ab585c34a6b46bdc6396c707e626bc0ba9677aa1b623b5867d9faf973175be384460118e261dac8720ebd77b2998cdc767b9314abdd243522519fb0ec00391830abd8ca16db6bae109ccb4e90029a6ebfc239067f025045372e81b9d892b479d77fe8762538f3a1f5e8f3e42f0b7017ec0523105be0a95dec749b9d0a1123aea1846ee93eac3d114ee836ad88f4139eec09601819b40739a8a1ae7113a551caed5ffdeb79bf8619a4806e217c2b94adce1260029e64066ca7018f4efbf11ad43f89c46b12f9f528902800ae392abe129a8e55074a9d5af571d9b1c1d39c69e01341d9778fe9e22feea114e12221f0c7c31547e21b9eec00af12caac5c44b4694b6fdba050b704662aa85126323d636fe412bb33c7dd6672a555e3a1c86c1aba45abad5a1c00ea0b3aefb73ffab30af3ed34992143505d666c90dde2765b67b77deab41427f61681481b982791e69965ce95d80b526df9830b81cd13ee3745406e576431b77490ffbc0215fd25904d7a4416709070bdc3efb2e878dec5ba7d48eab2d34de95de07a62922bd2fd25d94e5cbee54c8b18d4c080fa74dc4153ce0f32dec53c66be6bb7401f93272b1b66e4c91b82e58e4542de034f8dc21491c728db0852b8b4370a8a1cfc008eef8d11d617f0848b85a6cab92b7e26b2eb4deaccaf98ab6f8ad3ab574fd59f00fcae64fd5df3dc4b8cba3d10b4e0f9cc782282d9680de69494b4974ae0bd095592831640b03ff84e19985dd3e606df230271fdf8034f76ac8f3fb0d63f43fc513de6762351481fc09b8b45f0cccada58a4ba30da55deb540da556f484c5322e4e2cf464cd351da13d350df9509cc56c7ab6b6a171574ce60d4368b700a2ae1a4549fd3b2e51cdd306c2df6e6774ef4843f6be6b177f6545125d64923f931c5ed5fa05b503de6e88345fba3f1fffec49dbf1d38ffb3e3fc9bf37feecf178fb69f3dbdfc66dc3bf1d13887852754b579eeafc1892244e9282b439413bc2e046862335760c3667669811537982c5df62a73eaf1bd0616a05f6f6f85b3ce0e6d53ec759f87206b5d684b4ab23fe4252755e928420b5beb06baab460c7da2dc85c8d0b861382699d05c159122d8b2b7be54d9b8f5ec69192d90cb138077f2b03b60d8cea3050a1090cbf86f0fd39d1310ddbd31fdaac18b82e58a71b79c20fbb27b03cdf54c125e75b3ca28d9f22b98256c50334cf8e22aa68900d48dd3dfc747a579ca0d90adb7a1092aae2f292dd117b02b96987d96c59696b6059fd17bae9b933c29405727a0470f288bc4657f9160514098bd44906f2f674c9a32301668c05d864a602450b5120b5b41fd7b21a636b792e28e5aae73e5c06ba4d1b6d9cac571278285b9227abdb12adba1af352b15616ce9738cd41a6e5a86abd890dd5e1b7918cf863b189d23a842c4c3f353f5a94f267bb58f4aad065aa52920f5284e799d40f5da337b334277df2b54bfdba2f5a99b3daf8c99ba388188ce43299f252a4451c693c52c04d717d5a34cf58169c60bf79a15f2c49bcdb95112e93c531f8d27f70aa5d3268f4fb3b9ba1d9fae18c89d6766ed9202d6be6be10b3014730359776c2a8de56f967f65e7984ac5941eceb7687d3246ba8cbe4510b1ef0fded39703ac35eac81eacc0ea2adc692c296874fc1051bc1d8152587de9a36647358e54cfd1ac394453c7e44698af212a461da20e693b74be177ad43aa3dd7d80e52665e184b0b1175d2242a883748184fdde44c5d06342f60a8cee7ef94f628db5c4bd10a847d9c6705a8160a458e59b2f66973181e423e770eb2de670c31857b32c2274d538cf1c08579bfc75ee77d8dbeaacce03bbd1fff3d1f1b60920fab448b933f1863c647445d6d273882b6d1bfe2044dce74c576b0c74a7cb26a309fe9fb374a5b1a9bad31500760b51e57985e36ca399d532678114be5a2821647f74dbb17995865d5e74b5bcb18c68cfe0c3640e52564a24882a2ecb6de32c643f41b389075bed76a50fdb92812672056265689a156264791381731b5760dd7a34ffaa528b13ad6272c3701b1c384791c871ded0d7dec0d96e2e00946be17d4bb23578edf5d97272e95aa5c529a99667c32d81141da19b282b4188a4696b2ec8fd9cd241d1284bee60e0b5241be9e1f641f032f16b266782f84a840db9f11610a6414c162c8bd69826b210eef552e44b2f806457eed7f38415f1f96d0104278d6b2e780cfeaec16d2e78e49f00e8db919a15dfb9d58eae2588f2730637bcf6f025f300d5a821ffee0b18ab8211bd9e697e9985ade8a270e2eaf403cc913dc059b45562e79d072b7d58eba65c5ce48df1165cba0b277ba60f9961766885c79b392c284f0d40ab5c94b22a3e67f71264ce8a09e337b13de459c2fb79b56fd2ebf1f6c56e9dd49c2a15aca6589fd7dfa2d92abaf4c7061b0c7d9348e04b055a3de23e4fe5c9ed497c67590ca89dabc4ff07d5873f7d38fe35eac25586bd6144bc4ad4782c4fc5720d11daa3dd2abe22b3e6689e199fed387f741e3d75a02707bad2e3274fbe1b4d3e683ea7e36c0f574bdab05def28c06d5aa2968c9c51cf36d1ac83ab7f58a4e66b0a73f0f6f807b1dcb2dd8337f42711898477b9366b79b5716eff6bef37bad2679cfe611deaabbaa624e3147a25a6c73d4dbffa299a8dcf4c1dd057fa0e22152d4395ea6cb4ef68b4200bff7e3d27b67adcc9eea6f592658c39b6b44a55fccc2fae86f85c064bda4e5b0d7c13ee9dd2864260791c70834aa2b7a92dd3f26fd96e591ec745520340cc8ac5cc04bba30bd140cd11b04dedfb78feb2588c891315125eb4099712c1199bf89ccbca51acfa41acc6f0f87c9e88392d8ae2b6520cd0bc6c1d299d829e41b8cdcf608c74a7106ecbe68d03c48866eb98f78a4234bd7db85d49edca948625d9db44e04786eb9f5caa14b07de04b8a4bc7d973556e3a742e061a5452446507e57d0af6fd1132ea33fb45dbcbd9f2af1042fb2f6017ab37f2e55fdf8337b1f9f06e339b48777a6f6a12cb9bfb8a78ddc35bfa0622d36913f17ef06b1f8ea2af97d9d5b0deb3e858e54e19c5c107882b1f5f004b0454bb761cdf7ba158768158f37ab146eba41a9ccc302cc9c98b1a154978cb411ff1e5011d20df9ab56ec62befe929bf2e3b40862e2e10ea31ee45fa89ff8c2146e56ae5a23f5bd6bee0077b25a2a2333da34dfc364ab1bff1ea230e769f5e77b7aeeefbb6b798b4d1cfcccacc3d81b9802ea6a11ee8a976133021deeca779f550eb56a15fd5f147fc69bf086f0f878209c24fd4d157d67fb1b93f2a9d342bfef23115c9d279eceeb84fd6d72e3fe6fe4bf35bee2bdbc11cdfa80063a5eba140474d08d1c7ff030000ffff010000ffffa2543bf29a800000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["index.html"] = bs diff --git a/cmd/syncthing/gui.go b/cmd/syncthing/gui.go index 5e89ca2549..02e68a8093 100644 --- a/cmd/syncthing/gui.go +++ b/cmd/syncthing/gui.go @@ -250,30 +250,18 @@ func restPostConfig(req *http.Request, m *model.Model) { } } - if newCfg.Options.UREnabled && !cfg.Options.UREnabled { + if newCfg.Options.URAccepted > cfg.Options.URAccepted { // UR was enabled - cfg.Options.UREnabled = true - cfg.Options.URDeclined = false - cfg.Options.URAccepted = usageReportVersion - // Set the corresponding options in newCfg so we don't trigger the restart check if this was the only option change - newCfg.Options.URDeclined = false newCfg.Options.URAccepted = usageReportVersion err := sendUsageReport(m) if err != nil { l.Infoln("Usage report:", err) } go usageReportingLoop(m) - } else if !newCfg.Options.UREnabled && cfg.Options.UREnabled { + } else if newCfg.Options.URAccepted < cfg.Options.URAccepted { // UR was disabled - cfg.Options.UREnabled = false - cfg.Options.URDeclined = true - cfg.Options.URAccepted = 0 - // Set the corresponding options in newCfg so we don't trigger the restart check if this was the only option change - newCfg.Options.URDeclined = true - newCfg.Options.URAccepted = 0 + newCfg.Options.URAccepted = -1 stopUsageReporting() - } else { - cfg.Options.URDeclined = newCfg.Options.URDeclined } if !reflect.DeepEqual(cfg.Options, newCfg.Options) || !reflect.DeepEqual(cfg.GUI, newCfg.GUI) { diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 44114c26fa..dfbb4957de 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -415,11 +415,11 @@ nextRepo: } } - if cfg.Options.UREnabled && cfg.Options.URAccepted < usageReportVersion { + if cfg.Options.URAccepted > 0 && cfg.Options.URAccepted < usageReportVersion { l.Infoln("Anonymous usage report has changed; revoking acceptance") - cfg.Options.UREnabled = false + cfg.Options.URAccepted = 0 } - if cfg.Options.UREnabled { + if cfg.Options.URAccepted >= usageReportVersion { go usageReportingLoop(m) |