diff --git a/raspberry-pi/config.toml b/raspberry-pi/config.toml index 2df2369..2a78b1b 100644 --- a/raspberry-pi/config.toml +++ b/raspberry-pi/config.toml @@ -1,4 +1,6 @@ [audio] +# The native rate of the microphone +MIC_RATE = 48000 # How many samples per second to collect SAMPLE_RATE = 16000 MODEL_PATH = "cache/moonshine/tiny-streaming" @@ -8,4 +10,4 @@ MODEL_ARCH = 2 #tiny streaming # [intent]); the Pi just streams transcript lines. [remote] -url = "ws://localhost:8765/cse481/ws/pi" \ No newline at end of file +url = "wss://api.magnusfulton.com/cse481/ws/pi" diff --git a/raspberry-pi/main.py b/raspberry-pi/main.py index 268f764..43da3f7 100644 --- a/raspberry-pi/main.py +++ b/raspberry-pi/main.py @@ -1,9 +1,9 @@ import tomllib import time import asyncio -import websockets import json import numpy as np +import sounddevice as sd from moonshine_voice import Transcriber, TranscriptEventListener, ModelArch from typing import Union, Awaitable, Callable @@ -50,64 +50,50 @@ async def worker(): with open("config.toml", "rb") as t: conf = tomllib.load(t) - print(f"[worker] connecting to {conf['remote']['url']}") - async with asyncio.TaskGroup() as tg, \ - websockets.connect( - conf["remote"]["url"], - max_size=None, - ping_interval=20) as ws: - - print("[worker] websocket connected") - - async def send_transcript(text): - try: - print(f"[worker] send_transcript: sending transcript={text!r}") - await ws.send(json.dumps({ - "type": "transcript", - "data": text - })) - print("[worker] send_transcript: send completed") - except websockets.exceptions.ConnectionClosedOK: - # remote closed cleanly; ignore this send - print( - "[worker] send_transcript: ConnectionClosedOK while sending; ignoring") - return - except Exception as exc: - # connection closed or other send error; ignore so pipeline can continue/shutdown gracefully - print(f"[worker] send_transcript: send failed: {exc}") - return + print("[worker] starting local microphone capture") + + async def print_transcript(text): + print(f"[worker] transcript: {text!r}") + + audio_pipeline = AudioPipeline(conf["audio"], print_transcript) - # The cloud now handles intent detection, so the Pi just streams each - # completed transcript line as the model produces it. - audio_pipeline = AudioPipeline(conf["audio"], send_transcript) - - try: - print("[worker] sending register_pi") - await ws.send(json.dumps({"type": "register_pi"})) - print("[worker] register_pi sent") - except websockets.exceptions.ConnectionClosedOK: - print("[worker] connection closed during register; exiting") - return - except Exception as e: - print("[worker] failed to send register:", e) - return - - print("[worker] created audio_pipeline") - - print("Started!") - - async for msg in ws: - if isinstance(msg, (bytes, bytearray)): - samples_i16 = np.frombuffer(msg, dtype=np.int16) - samples_f32 = samples_i16.astype(np.float32) / 32768.0 - audio_pipeline.submit_audio_sample(samples_f32) - else: - try: - data = json.loads(msg) - print(f"[worker] text frame: {data}") - except Exception as e: - print(f"[worker] non-json frame: {msg!r} error={e}") + mic_rate = conf["audio"]["MIC_RATE"] + sample_rate = conf["audio"]["SAMPLE_RATE"] + channels = conf["audio"].get("CHANNELS", 1) + + def audio_callback(indata, frames, time_info, status): + if status: + print(f"[audio] status: {status}") + samples = indata + if samples.ndim > 1: + samples = samples.mean(axis=1) + + # simple resampling when mic rate differs from model SAMPLE_RATE + if mic_rate != sample_rate: + old_len = samples.shape[0] + duration = old_len / mic_rate + new_len = int(round(duration * sample_rate)) + if new_len <= 0: + return + t_old = np.linspace(0, duration, num=old_len, endpoint=False) + t_new = np.linspace(0, duration, num=new_len, endpoint=False) + samples = np.interp(t_new, t_old, samples).astype(np.float32) + else: + samples = samples.astype(np.float32) + + audio_pipeline.submit_audio_sample(samples) + + print(f"[worker] opening InputStream mic_rate={mic_rate} sample_rate={sample_rate}") + try: + with sd.InputStream(samplerate=mic_rate, channels=channels, callback=audio_callback): + print("Started! Press Ctrl-C to stop.") + while True: + await asyncio.sleep(1) + except KeyboardInterrupt: + print("Interrupted, exiting") + except Exception as e: + print(f"[worker] audio stream error: {e}") if __name__ == "__main__": - asyncio.run(worker()) \ No newline at end of file + asyncio.run(worker()) diff --git a/vox-tiny/.gitignore b/vox-tiny/.gitignore new file mode 100644 index 0000000..22c70e3 --- /dev/null +++ b/vox-tiny/.gitignore @@ -0,0 +1,3 @@ +vosk-model-small-en-us-0.15/ +secrets.json +intents/ diff --git a/vox-tiny/assistant.py b/vox-tiny/assistant.py new file mode 100644 index 0000000..9d69e88 --- /dev/null +++ b/vox-tiny/assistant.py @@ -0,0 +1,181 @@ +# pip install sounddevice python-vlc vosk PyAudio scikit-learn + +import json +import queue +import pickle + +import sounddevice as sd +import subprocess + +from vosk import Model +from vosk import KaldiRecognizer + +SAMPLE_RATE = 48000 +BLOCK_SIZE = 4000 + +audio_q = queue.Queue() + +# -------------------- +# load model +# -------------------- + +with open( + "intent_model.pkl", + "rb" +) as f: + vectorizer, classifier = pickle.load(f) + +# -------------------- +# load intent names +# -------------------- + +with open("intent_names.txt") as f: + intent_names = [x.strip() for x in f if x.strip()] + # preserve order and remove duplicates while keeping the first occurrence + intent_names = list(dict.fromkeys(intent_names)) + +# -------------------- +# audio playback +# -------------------- + +current_player = None + + +def play_intent(intent): + subprocess.run( + ["aplay", f"intents/{intent}.wav"], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) +# -------------------- +# intent classifier +# -------------------- + + +def classify(text): + + x = vectorizer.transform( + [text] + ) + + probs = classifier.predict_proba( + x + )[0] + + best_label_index = probs.argmax() + + confidence = float( + probs[best_label_index] + ) + + best_class = classifier.classes_[best_label_index] + + # If the classifier's class is an integer index into intent_names, use it. + # Otherwise fall back to the classifier class value as a string. + intent_name = None + try: + label_index = int(best_class) + except Exception: + label_index = None + + if label_index is not None and 0 <= label_index < len(intent_names): + intent_name = intent_names[label_index] + else: + # If the class itself is already an intent name, prefer that. + if str(best_class) in intent_names: + intent_name = str(best_class) + else: + intent_name = str(best_class) + + return ( + intent_name, + confidence + ) + +# -------------------- +# mic callback +# -------------------- + + +def audio_callback( + indata, + frames, + time_info, + status +): + if status: + print(status) + + audio_q.put( + bytes(indata) + ) + +# -------------------- +# main +# -------------------- + + +def main(): + + model = Model( + "vosk-model-small-en-us-0.15" + ) + + recognizer = KaldiRecognizer( + model, + SAMPLE_RATE + ) + + with sd.RawInputStream( + samplerate=SAMPLE_RATE, + blocksize=BLOCK_SIZE, + dtype="int16", + channels=1, + callback=audio_callback + ): + + print( + "Listening..." + ) + + while True: + + data = audio_q.get() + + if recognizer.AcceptWaveform( + data + ): + + result = json.loads( + recognizer.Result() + ) + + text = result.get( + "text", + "" + ) + + if not text: + continue + + intent, score = classify( + text + ) + + print( + f"{text!r}" + ) + + print( + f"→ {intent} " + f"({score:.3f})" + ) + + if score > 0.45: + play_intent( + intent + ) + + +if __name__ == "__main__": + main() diff --git a/vox-tiny/download-files.sh b/vox-tiny/download-files.sh new file mode 100755 index 0000000..3376c04 --- /dev/null +++ b/vox-tiny/download-files.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +rm -rf vosk-model-small-en-us-0.15 intents + +wget https://s3.magnusfulton.com/shared/labrador/vosk-model-small-en-us-0.15.zip +unzip vosk-model-small-en-us-0.15.zip +rm vosk-model-small-en-us-0.15.zip + +wget https://s3.magnusfulton.com/shared/labrador/intents-spoken-wav.zip +unzip intents-spoken-wav.zip +rm intents-spoken-wav.zip diff --git a/vox-tiny/intent_model.pkl b/vox-tiny/intent_model.pkl new file mode 100644 index 0000000..546c79c Binary files /dev/null and b/vox-tiny/intent_model.pkl differ diff --git a/vox-tiny/intent_names.txt b/vox-tiny/intent_names.txt new file mode 100644 index 0000000..4b80b42 --- /dev/null +++ b/vox-tiny/intent_names.txt @@ -0,0 +1,8954 @@ +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_query +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_remove +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +alarm_set +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_down +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_mute +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +audio_volume_up +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_query +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_remove +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +calendar_set +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +cooking_recipe +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_convert +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +datetime_query +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_addcontact +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_query +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_querycontact +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +email_sendemail +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_affirm +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_commandstop +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_confirm +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_dontcare +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_explain +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_joke +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_negate +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_praise +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_quirky +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +general_repeat +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_cleaning +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_coffee +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightchange +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightdim +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lightoff +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lighton +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_hue_lightup +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_off +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +iot_wemo_on +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_createoradd +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_query +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +lists_remove +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_likeness +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_query +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +music_settings +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +news_query +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_audiobook +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_game +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_music +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_podcasts +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +play_radio +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_currency +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_definition +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_factoid +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_maths +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +qa_stock +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_events +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_locations +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +recommendation_movies +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_post +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +social_query +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_order +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +takeaway_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_query +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_taxi +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_ticket +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +transport_traffic +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query +weather_query diff --git a/vox-tiny/train.py b/vox-tiny/train.py new file mode 100644 index 0000000..cb17b40 --- /dev/null +++ b/vox-tiny/train.py @@ -0,0 +1,41 @@ +from datasets import load_dataset +from sklearn.feature_extraction.text import TfidfVectorizer +from sklearn.linear_model import LogisticRegression +import pickle + +dataset = load_dataset( + "DeepPavlov/hwu64" +) + +texts = dataset["train"]["utterance"] +labels = dataset["train"]["label"] + +vectorizer = TfidfVectorizer( + lowercase=True, + ngram_range=(1, 2), + min_df=2 +) + +X = vectorizer.fit_transform( + texts +) + +classifier = LogisticRegression( + max_iter=1000, + n_jobs=-1 +) + +classifier.fit( + X, + labels +) + +with open( + "intent_model.pkl", + "wb" +) as f: + + pickle.dump( + (vectorizer, classifier), + f + ) \ No newline at end of file diff --git a/vox-tiny/voice.py b/vox-tiny/voice.py new file mode 100644 index 0000000..a96173a --- /dev/null +++ b/vox-tiny/voice.py @@ -0,0 +1,205 @@ +#!/usr/bin/env python3 +""" +Generate short spoken MP3 responses for each intent. + +Usage: + python3 voice.py # uses vox-tiny/intent_names.txt, writes to ./intents/ + python3 voice.py --force # regenerate all mp3s even if they exist + +Requires: + - OPENAI_API_KEY environment variable + - pip install openai gtts + +The script: +- loads unique intent names from vox-tiny/intent_names.txt +- for each intent asks the GPT model for a short response (using the + model gpt-realtime-mini-2025-12-15 by default) +- synthesizes the returned text to an mp3 using gTTS and saves intents/{intent}.mp3 +""" + +from __future__ import annotations + +import argparse +import os +import sys +import time +from pathlib import Path + +try: + import openai +except Exception as e: + print("Missing dependency: openai. Install with: pip install openai") + raise + +try: + from gtts import gTTS +except Exception as e: + print("Missing dependency: gtts. Install with: pip install gtts") + raise + + +DEFAULT_INTENT_FILE = Path("intent_names.txt") +DEFAULT_OUT_DIR = Path("intents") +DEFAULT_MODEL = "gpt-5.4-mini" + + +EXAMPLES_TEXT = """Examples: +Listening... +'help me buy a train ticket to boston' +→ transport_ticket (0.755) +Would've played: "Ok, I'll check prices for you!" + +'help me create a new list' +→ lists_createoradd (0.825) +Would've played: intents/lists_createoradd.mp3 "Got it! I'll write that down." + +'turn off the lights please' +→ iot_hue_lightoff (0.859) +Would've played: intents/iot_hue_lightoff.mp3 "On it! Dimming the lights..." +""" + +SYSTEM_INSTRUCTION = ( + "You are a concise assistant that writes short, polite, natural spoken replies " + "for a voice assistant. For a given intent name produce a short spoken response " + "that a generic assistant could say out loud. Keep replies short (about 2-10 words), " + "natural, and unambiguous. Output only the reply text, without surrounding quotes, " + "metadata, or explanations." +) + +def create_client() -> OpenAI: + api_key = os.environ.get("OPENAI_API_KEY") + + if not api_key: + raise EnvironmentError( + "OPENAI_API_KEY not set in environment" + ) + + return openai.OpenAI(api_key=api_key) + +def load_intents(intent_file: Path) -> list[str]: + if not intent_file.exists(): + raise FileNotFoundError(f"Intent file not found: {intent_file}") + with intent_file.open("r", encoding="utf-8") as f: + lines = [l.strip() for l in f if l.strip()] + # preserve order and deduplicate (first occurrence wins) + seen = set() + unique = [] + for l in lines: + if l not in seen: + seen.add(l) + unique.append(l) + return unique + +def ask_gpt_for_reply( + client: OpenAI, + intent: str, + model: str, +) -> str: + """ + Generate a short spoken response for an intent. + """ + + prompt = ( + f"Intent: {intent}\n\n" + f"Provide a short spoken reply appropriate for this intent." + ) + + response = client.responses.create( + model=model, + input=[ + { + "role": "system", + "content": SYSTEM_INSTRUCTION, + }, + { + "role": "user", + "content": EXAMPLES_TEXT, + }, + { + "role": "user", + "content": prompt, + }, + ], + max_output_tokens=40, + ) + + text = response.output_text.strip() + + if ( + text.startswith('"') + and text.endswith('"') + ) or ( + text.startswith("'") + and text.endswith("'") + ): + text = text[1:-1].strip() + + text = " ".join(text.split()) + + return text + +def synthesize_to_mp3(text: str, out_path: Path, lang: str = "en"): + """ + Uses gTTS to synthesize text to an mp3 file at out_path. + """ + if not text: + raise ValueError("Empty text provided for synthesis") + tts = gTTS(text=text, lang=lang) + tmp = out_path.with_suffix(".tmp.mp3") + tts.save(str(tmp)) + tmp.rename(out_path) + + +def main(): + p = argparse.ArgumentParser(description="Generate mp3 responses for intents.") + p.add_argument("--intents-file", default=str(DEFAULT_INTENT_FILE)) + p.add_argument("--out-dir", default=str(DEFAULT_OUT_DIR)) + p.add_argument("--model", default=DEFAULT_MODEL) + p.add_argument("--force", action="store_true", help="Regenerate MP3 files even if they exist") + p.add_argument("--sleep", type=float, default=1.0, help="Seconds to sleep between OpenAI requests") + args = p.parse_args() + + intents_file = Path(args.intents_file) + out_dir = Path(args.out_dir) + out_dir.mkdir(parents=True, exist_ok=True) + + try: + intents = load_intents(intents_file) + except Exception as e: + print(f"Error loading intents: {e}") + sys.exit(1) + + print(f"Loaded {len(intents)} unique intents (will write to {out_dir}).") + + client = create_client() + + for i, intent in enumerate(intents, start=1): + safe_name = intent.replace("/", "_").replace(" ", "_") + out_path = out_dir / f"{safe_name}.mp3" + if out_path.exists() and not args.force: + print(f"[{i}/{len(intents)}] Skipping existing: {out_path}") + continue + + try: + print(f"[{i}/{len(intents)}] Asking model for intent: {intent}") + reply = ask_gpt_for_reply(client, intent, model=args.model) + print(f" -> Reply: {reply!r}") + except Exception as e: + print(f" ERROR asking model for {intent}: {e}") + continue + + try: + print(f" Synthesizing to {out_path} ...") + synthesize_to_mp3(reply, out_path) + except Exception as e: + print(f" ERROR synthesizing {intent}: {e}") + continue + + # polite pause to avoid rate-limits + time.sleep(args.sleep) + + print("Done.") + + +if __name__ == "__main__": + main()