| 
				
			 | 
			
			
				@@ -1,6 +1,13 @@ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				1
			 | 
			
			
				+from base64 import urlsafe_b64encode, urlsafe_b64decode 
			 | 
		
	
		
			
			| 
				
			 | 
			
				2
			 | 
			
			
				+from zlib import compress, decompress 
			 | 
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				+from sys import version 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				1
			 | 
			
				5
			 | 
			
			
				 from searx import settings, autocomplete 
			 | 
		
	
		
			
			| 
				2
			 | 
			
				6
			 | 
			
			
				 from searx.languages import language_codes as languages 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				
			 | 
			
			
				-from searx.url_utils import urlencode 
			 | 
		
	
		
			
			| 
				
			 | 
			
				7
			 | 
			
			
				+from searx.url_utils import parse_qs, urlencode 
			 | 
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+if version[0] == '3': 
			 | 
		
	
		
			
			| 
				
			 | 
			
				10
			 | 
			
			
				+    unicode = str 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				11
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				5
			 | 
			
				12
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				6
			 | 
			
				13
			 | 
			
			
				 COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5  # 5 years 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -279,7 +286,11 @@ class Preferences(object): 
			 | 
		
	
		
			
			| 
				279
			 | 
			
				286
			 | 
			
			
				         settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled) 
			 | 
		
	
		
			
			| 
				280
			 | 
			
				287
			 | 
			
			
				         settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled) 
			 | 
		
	
		
			
			| 
				281
			 | 
			
				288
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				282
			 | 
			
				
			 | 
			
			
				-        return urlencode(settings_kv) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				289
			 | 
			
			
				+        return urlsafe_b64encode(compress(urlencode(settings_kv).encode('utf-8'))).decode('utf-8') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				290
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				291
			 | 
			
			
				+    def parse_encoded_data(self, input_data): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				292
			 | 
			
			
				+        decoded_data = decompress(urlsafe_b64decode(input_data.encode('utf-8'))) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				293
			 | 
			
			
				+        self.parse_dict({x: y[0] for x,y in parse_qs(unicode(decoded_data)).items()}) 
			 | 
		
	
		
			
			| 
				283
			 | 
			
				294
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				284
			 | 
			
				295
			 | 
			
			
				     def parse_dict(self, input_data): 
			 | 
		
	
		
			
			| 
				285
			 | 
			
				296
			 | 
			
			
				         for user_setting_name, user_setting in input_data.items(): 
			 |