From 921141c994c4e762c6eb67fb101bc8d77180762b Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Thu, 27 Aug 2020 10:29:47 -0500 Subject: [PATCH 01/14] started test launch work --- gradio/interface.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gradio/interface.py b/gradio/interface.py index 2a5140737c..2c7232a75a 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -193,10 +193,11 @@ class Interface: return config - def process(self, raw_input): + def process(self, raw_input, predict_fn=None): """ :param raw_input: a list of raw inputs to process and apply the prediction(s) on. + :param predict_fn: which function to process. If not provided, all of the model functions are used. :return: processed output: a list of processed outputs to return as the prediction(s). @@ -253,6 +254,12 @@ class Interface: thread.keep_running = False networking.url_ok(path_to_local_server) + def test_launch(self): + for predict_fn in self.predict: + print("Testing {}()...".format(predict_fn.__name__), end=' ') + + + def launch(self, inline=None, inbrowser=None, share=False, debug=False): """ Parameters From d8c88e76d9df4b0a67f255b19bc8a6ad4b96b684 Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Fri, 28 Aug 2020 09:52:57 -0500 Subject: [PATCH 02/14] added test inputs to all input interfaces except File --- gradio/inputs.py | 40 +++++++++++++++++++++++++++++----------- gradio/interface.py | 12 +++++++++++- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/gradio/inputs.py b/gradio/inputs.py index 3ea254c7bc..7e017eb446 100644 --- a/gradio/inputs.py +++ b/gradio/inputs.py @@ -33,7 +33,7 @@ class Textbox(InputComponent): """ def __init__(self, lines=1, placeholder=None, default=None, numeric=False, type="str", label=None): - ''' + """ Parameters: lines (int): number of line rows to provide in textarea. placeholder (str): placeholder hint to provide behind textarea. @@ -41,7 +41,7 @@ class Textbox(InputComponent): numeric (bool): DEPRECATED. Whether the input should be parsed as a number instead of a string. type (str): Type of value to be returned by component. "str" returns a string, "number" returns a float value. label (str): component name in interface. - ''' + """ self.lines = lines self.placeholder = placeholder self.default = default @@ -50,6 +50,10 @@ class Textbox(InputComponent): self.type = "number" else: self.type = type + self.test_input = { + "str": "the quick brown fox jumped over the lazy dog", + "number": 786.92, + }[type] super().__init__(label) def get_template_context(self): @@ -77,7 +81,6 @@ class Textbox(InputComponent): raise ValueError("Unknown type: " + self.type + ". Please choose from: 'str', 'number'.") - class Slider(InputComponent): """ Component creates a slider that ranges from `minimum` to `maximum`. Provides a number as an argument to the wrapped function. @@ -101,6 +104,7 @@ class Slider(InputComponent): step = 10 ** power self.step = step self.default = minimum if default is None else default + self.test_input = self.default super().__init__(label) def get_template_context(self): @@ -126,10 +130,11 @@ class Checkbox(InputComponent): """ def __init__(self, label=None): - ''' + """ Parameters: label (str): component name in interface. - ''' + """ + self.test_input = True super().__init__(label) @classmethod @@ -154,6 +159,7 @@ class CheckboxGroup(InputComponent): ''' self.choices = choices self.type = type + self.test_input = self.preprocess(self.choices) super().__init__(label) def get_template_context(self): @@ -186,6 +192,7 @@ class Radio(InputComponent): ''' self.choices = choices self.type = type + self.test_input = self.preprocess(self.choices) super().__init__(label) def get_template_context(self): @@ -202,6 +209,7 @@ class Radio(InputComponent): else: raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") + class Dropdown(InputComponent): """ Component creates a dropdown of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. @@ -217,6 +225,7 @@ class Dropdown(InputComponent): ''' self.choices = choices self.type = type + self.test_input = self.preprocess(self.choices) super().__init__(label) def get_template_context(self): @@ -248,7 +257,7 @@ class Image(InputComponent): invert_colors (bool): whether to invert the image as a preprocessing step. source (str): Source of image. "upload" creates a box where user can drop an image file, "webcam" allows user to take snapshot from their webcam, "canvas" defaults to a white image that can be edited and drawn upon with tools. tool (str): Tools used for editing. "editor" allows a full screen editor, "select" provides a cropping and zoom tool. - type (str): Type of value to be returned by component. "numpy" returns a numpy array with shape (width, height, 3), "pil" returns a PIL image object, "file" returns a temporary file object whose path can be retrieved by file_obj.name. + type (str): Type of value to be returned by component. "numpy" returns a numpy array with shape (width, height, 3) and values from 0 to 255, "pil" returns a PIL image object, "file" returns a temporary file object whose path can be retrieved by file_obj.name. label (str): component name in interface. ''' self.shape = shape @@ -257,6 +266,9 @@ class Image(InputComponent): self.tool = tool self.type = type self.invert_colors = invert_colors + + base64_image = "data:image/gif;base64,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" + self.test_input = self.preprocess(base64_image) super().__init__(label) @classmethod @@ -293,6 +305,8 @@ class Image(InputComponent): file_obj = tempfile.NamedTemporaryFile() im.save(file_obj.name) return file_obj + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'pil', 'file'.") def process_example(self, example): if os.path.exists(example): @@ -318,14 +332,16 @@ class Audio(InputComponent): """ def __init__(self, source="upload", type="numpy", label=None): - ''' + """ Parameters: source (str): Source of audio. "upload" creates a box where user can drop an audio file, "microphone" creates a microphone input. type (str): Type of value to be returned by component. "numpy" returns a 2-set tuple with an integer sample_rate and the data numpy.array of shape (samples, 2), "file" returns a temporary file object whose path can be retrieved by file_obj.name, "mfcc" returns the mfcc coefficients of the input audio. label (str): component name in interface. - ''' + """ self.source = source self.type = type + base64_audio = "data:audio/ogg;base64,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" + self.test_input = self.preprocess(base64_audio) super().__init__(label) def get_template_context(self): @@ -391,7 +407,7 @@ class Dataframe(InputComponent): """ def __init__(self, headers=None, row_count=3, col_count=3, datatype="str", type="pandas", label=None): - ''' + """ Parameters: headers (List[str]): Header names to dataframe. row_count (int): Limit number of rows for input. @@ -399,15 +415,17 @@ class Dataframe(InputComponent): datatype (Union[str, List[str]]): Datatype of values in sheet. Can be provided per column as a list of strings, or for the entire sheet as a single string. Valid datatypes are "str", "number", "bool", and "date". type (str): Type of value to be returned by component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for a Python array. label (str): component name in interface. - ''' + """ self.headers = headers self.datatype = datatype self.row_count = row_count self.col_count = len(headers) if headers else col_count self.type = type + sample_values = {"str": "abc", "number": 786, "bool": True, "date": "02/08/1993"} + column_dtypes = [datatype]*self.col_count if isinstance(datatype, str) else datatype + self.test_input = [[sample_values[c] for c in column_dtypes] for _ in range(row_count)] super().__init__(label) - def get_template_context(self): return { "headers": self.headers, diff --git a/gradio/interface.py b/gradio/interface.py index 2c7232a75a..539bc5e6e4 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -256,9 +256,19 @@ class Interface: def test_launch(self): for predict_fn in self.predict: - print("Testing {}()...".format(predict_fn.__name__), end=' ') + print("Testing: {}()...".format(predict_fn.__name__), end=' ') + raw_input = [] + for input_interface in self.input_interfaces: + if input_interface.test_input is None: + break + else: + raw_input.append(input_interface.test_input) + else: + self.process(raw_input) + print("PASSED") + print("SKIPPED") def launch(self, inline=None, inbrowser=None, share=False, debug=False): """ From a5c1af0fc3c940220e054caa5b7395a6e25fca92 Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Fri, 28 Aug 2020 09:53:30 -0500 Subject: [PATCH 03/14] tweaked messaging --- gradio/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradio/interface.py b/gradio/interface.py index 539bc5e6e4..8d6f783be9 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -256,7 +256,7 @@ class Interface: def test_launch(self): for predict_fn in self.predict: - print("Testing: {}()...".format(predict_fn.__name__), end=' ') + print("Test launching: {}()...".format(predict_fn.__name__), end=' ') raw_input = [] for input_interface in self.input_interfaces: From 9070405a334794602e0f001958e870b1fe577fa1 Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Fri, 28 Aug 2020 10:56:03 -0500 Subject: [PATCH 04/14] added test launch to all demos --- demo/diff_texts.py | 11 ++++++++--- demo/digit_classifier.py | 10 ++++++---- demo/filter_records.py | 7 +++++-- demo/generate_tone.py | 13 ++++++++----- demo/image_mod.py | 31 ++++++++++++++++--------------- demo/matrix_transpose.py | 16 ++++++++++------ demo/reverse_audio.py | 8 ++++++-- demo/sentence_builder.py | 37 ++++++++++++++++++++----------------- demo/spectogram.py | 9 +++++---- demo/stock_forecast.py | 25 ++++++++++++------------- demo/text_analysis.py | 9 +++++++-- demo/tmp.zip | Bin 129276 -> 0 bytes demo/webcam.py | 8 ++++++-- demo/zip_to_json.py | 7 ++++++- demo/zip_two_files.py | 7 ++++++- gradio/inputs.py | 28 ++++++++++++++++------------ gradio/interface.py | 12 ++++++------ 17 files changed, 143 insertions(+), 95 deletions(-) delete mode 100644 demo/tmp.zip diff --git a/demo/diff_texts.py b/demo/diff_texts.py index 3ecae0ab6d..ef61281ed2 100644 --- a/demo/diff_texts.py +++ b/demo/diff_texts.py @@ -1,13 +1,15 @@ import gradio as gr from difflib import Differ + def diff_texts(text1, text2): d = Differ() return [ (token[2:], token[0]) for token in d.compare(text1, text2) ] - -gr.Interface( + + +io = gr.Interface( diff_texts, [ gr.inputs.Textbox(lines=3, default="The quick brown fox jumped over the lazy dogs."), @@ -18,4 +20,7 @@ gr.Interface( "-": "pink", " ": "none", }) -).launch() \ No newline at end of file +) + +io.test_launch() +io.launch() diff --git a/demo/digit_classifier.py b/demo/digit_classifier.py index 6dfe3a5b27..a0121ea735 100644 --- a/demo/digit_classifier.py +++ b/demo/digit_classifier.py @@ -1,23 +1,25 @@ import tensorflow as tf import gradio -import os -from tensorflow.keras.layers import * import gradio as gr from urllib.request import urlretrieve urlretrieve("https://gr-models.s3-us-west-2.amazonaws.com/mnist-model.h5", "mnist-model.h5") model = tf.keras.models.load_model("mnist-model.h5") + def recognize_digit(image): image = image.reshape(1, -1) prediction = model.predict(image).tolist()[0] return {str(i): prediction[i] for i in range(10)} -gr.Interface( +io = gr.Interface( recognize_digit, gradio.inputs.Image(shape=(28, 28), image_mode="L", source="canvas"), gradio.outputs.Label(num_top_classes=3), live=True, capture_session=True, -).launch() +) + +io.test_launch() +io.launch() diff --git a/demo/filter_records.py b/demo/filter_records.py index be71927427..c916984bcc 100644 --- a/demo/filter_records.py +++ b/demo/filter_records.py @@ -5,11 +5,14 @@ import random def filter_records(records, gender): return records[records['gender'] == gender] -gr.Interface(filter_records, +io = gr.Interface(filter_records, [ gr.inputs.Dataframe(headers=["name", "age", "gender"], datatype=["str", "number", "str"], row_count=5), gr.inputs.Dropdown(["M", "F", "O"]) ], "dataframe", description="Enter gender as 'M', 'F', or 'O' for other." -).launch() +) + +io.test_launch() +io.launch() diff --git a/demo/generate_tone.py b/demo/generate_tone.py index dbd26f1be8..f551d687f6 100644 --- a/demo/generate_tone.py +++ b/demo/generate_tone.py @@ -1,22 +1,25 @@ import gradio as gr import numpy as np -import random notes = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"] + def generate_tone(note, octave, duration): sr = 48000 a4_freq, tones_from_a4 = 440, 12 * (octave - 4) + (note - 9) frequency = a4_freq * 2 ** (tones_from_a4 / 12) - audio = np.linspace(0, duration, duration * sr) + audio = np.linspace(0, int(duration), int(duration * sr)) audio = (20000 * np.sin(audio * (2 * np.pi * frequency))).astype(np.int16) - return (sr, audio) + return sr, audio -gr.Interface( +io = gr.Interface( generate_tone, [ gr.inputs.Dropdown(notes, type="index"), gr.inputs.Slider(4, 6, step=1), gr.inputs.Textbox(type="number", default=1, label="Duration in seconds") - ], "audio").launch() + ], "audio") + +io.test_launch() +io.launch() diff --git a/demo/image_mod.py b/demo/image_mod.py index 38bd047f53..4261bf6b68 100644 --- a/demo/image_mod.py +++ b/demo/image_mod.py @@ -1,22 +1,23 @@ import gradio as gr -from time import time -from PIL import Image, ImageFilter +from PIL import ImageFilter def image_mod(image): return image.rotate(45), image.filter(ImageFilter.FIND_EDGES) -gr.Interface(image_mod, - gr.inputs.Image(type="pil", tool="select"), - [ - gr.outputs.Image(type="pil"), - gr.outputs.Image(type="pil"), - ], - examples=[ - ["images/cheetah1.jpg"], - ["images/cheetah2.jpg"], - ["images/lion.jpg"], - ], - live=True, - ).launch(share=True) +io = gr.Interface( + image_mod, + gr.inputs.Image(type="pil", tool="select"), + [ + gr.outputs.Image(type="pil"), + gr.outputs.Image(type="pil"), + ], + examples=[ + ["images/cheetah1.jpg"], + ["images/cheetah2.jpg"], + ["images/lion.jpg"], + ], live=True) + +io.test_launch() +io.launch() diff --git a/demo/matrix_transpose.py b/demo/matrix_transpose.py index 1f7fb36c11..abc47755fd 100644 --- a/demo/matrix_transpose.py +++ b/demo/matrix_transpose.py @@ -1,12 +1,16 @@ import gradio as gr -import numpy as np -import random + def transpose(matrix): print(matrix) return matrix.T -gr.Interface(transpose, - gr.inputs.Dataframe(type="numpy", datatype="number", row_count=5, col_count=3), - "numpy" -).launch() + +io = gr.Interface( + transpose, + gr.inputs.Dataframe(type="numpy", datatype="number", row_count=5, col_count=3), + "numpy" +) + +io.test_launch() +io.launch() diff --git a/demo/reverse_audio.py b/demo/reverse_audio.py index ffefb927fe..435777d299 100644 --- a/demo/reverse_audio.py +++ b/demo/reverse_audio.py @@ -1,9 +1,13 @@ import gradio as gr import numpy as np -import random + def reverse_audio(audio): sr, data = audio return (sr, np.flipud(data)) -gr.Interface(reverse_audio, "microphone", "audio").launch() + +io = gr.Interface(reverse_audio, "microphone", "audio") + +io.test_launch() +io.launch() diff --git a/demo/sentence_builder.py b/demo/sentence_builder.py index 3b25f8efae..1580936ad4 100644 --- a/demo/sentence_builder.py +++ b/demo/sentence_builder.py @@ -1,23 +1,26 @@ import gradio as gr -import numpy as np + def sentence_builder(quantity, animal, place, activity_list, morning): return f"""The {quantity} {animal}s went to the {place} where they {" and ".join(activity_list)} until the {"morning" if morning else "night"}""" -gr.Interface(sentence_builder, - [ - gr.inputs.Slider(2, 20), - gr.inputs.Dropdown(["cat", "dog", "bird"]), - gr.inputs.Radio(["park", "zoo", "road"]), - gr.inputs.CheckboxGroup(["ran", "swam", "ate", "slept"]), - gr.inputs.Checkbox(label="Is it the morning?"), - ], - "text", - examples=[ - [2, "cat", "park", ["ran", "swam"], True], - [4, "dog", "zoo", ["ate", "swam"], False], - [10, "bird", "road", ["ran"], False], - [8, "cat", "zoo", ["ate"], True], - ], - ).launch() +io = gr.Interface( + sentence_builder, + [ + gr.inputs.Slider(2, 20), + gr.inputs.Dropdown(["cat", "dog", "bird"]), + gr.inputs.Radio(["park", "zoo", "road"]), + gr.inputs.CheckboxGroup(["ran", "swam", "ate", "slept"]), + gr.inputs.Checkbox(label="Is it the morning?"), + ], + "text", + examples=[ + [2, "cat", "park", ["ran", "swam"], True], + [4, "dog", "zoo", ["ate", "swam"], False], + [10, "bird", "road", ["ran"], False], + [8, "cat", "zoo", ["ate"], True], + ]) + +io.test_launch() +io.launch() diff --git a/demo/spectogram.py b/demo/spectogram.py index e550738efb..bb00944a98 100644 --- a/demo/spectogram.py +++ b/demo/spectogram.py @@ -2,16 +2,17 @@ import gradio as gr import matplotlib.pyplot as plt import numpy as np from scipy import signal -from scipy.io import wavfile -def reverse_audio(audio): +def spectogram(audio): sr, data = audio data = np.delete(data, 1, 1).reshape(-1) frequencies, times, spectrogram = signal.spectrogram(data.reshape(-1), sr, window="hamming") - plt.pcolormesh(times, frequencies, np.log10(spectrogram)) return plt -gr.Interface(reverse_audio, "audio", "plot").launch() +io = gr.Interface(spectogram, "audio", "plot") + +io.test_launch() +io.launch() diff --git a/demo/stock_forecast.py b/demo/stock_forecast.py index f100b22b78..9d7485e806 100644 --- a/demo/stock_forecast.py +++ b/demo/stock_forecast.py @@ -1,5 +1,4 @@ import gradio as gr -import random import matplotlib.pyplot as plt import numpy as np @@ -19,15 +18,15 @@ def stock_forecast(final_year, companies, noise, show_legend, point_style): return plt -gr.Interface(stock_forecast, - [ - gr.inputs.Radio([2025, 2030, 2035, 2040], - label="Project to:"), - gr.inputs.CheckboxGroup( - ["Google", "Microsoft", "Gradio"]), - gr.inputs.Slider(1, 100), - "checkbox", - gr.inputs.Dropdown(["cross", "line", "circle"], label="Style"), - ], - gr.outputs.Image(plot=True, label="forecast") - ).launch() +io = gr.Interface( + stock_forecast, + [ + gr.inputs.Radio([2025, 2030, 2035, 2040], label="Project to:"), + gr.inputs.CheckboxGroup(["Google", "Microsoft", "Gradio"]), + gr.inputs.Slider(1, 100), + "checkbox", + gr.inputs.Dropdown(["cross", "line", "circle"], label="Style")], + gr.outputs.Image(plot=True, label="forecast")) + +io.test_launch() +io.launch() diff --git a/demo/text_analysis.py b/demo/text_analysis.py index 879a609fc3..56eb5880b2 100644 --- a/demo/text_analysis.py +++ b/demo/text_analysis.py @@ -4,6 +4,7 @@ import gradio as gr nlp = spacy.load("en_core_web_sm") + def text_analysis(text): doc = nlp(text) html = displacy.render(doc, style="dep", page=True) @@ -21,10 +22,14 @@ def text_analysis(text): return pos_tokens, pos_count, html -gr.Interface( + +io = gr.Interface( text_analysis, gr.inputs.Textbox(placeholder="Enter sentence here..."), [ "highlight", "key_values", "html" ] -).launch() \ No newline at end of file +) + +io.test_launch() +io.launch() diff --git a/demo/tmp.zip b/demo/tmp.zip deleted file mode 100644 index b7d8e420260fde90fd82e373e42cde98adb088dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129276 zcmZ_1O^;+(cCL2~+k+;+kqvknJ-QQ;kXo{2_Z<+`AMB#s-E50>P4qA_Gcq$+krAng zOeU)V0~&kei2+@}n)-+7H+bNopXXg`?>Lb~-P`J}%sgj*tj~9S?0x?9zx>z#&42$N z{D1$$|M}njulYy+*MH0Z-fnlBzy8z3Bmc+$_5c3wzx@CHtN-BtjYod*?cwo$yIDQm zZ&rU;-)*ngyVbAnH@BaD^64kP`mlPl+pgYRZEyVX*Z1qkr_FKo*I%suu-QDV>P`Rh zhr{V<^|(1a?l!CSk-;{{(k+3v)Vp99!@7l`LMd#-rjDnpLe{zKE3~9^{eNnjO;r+zUB>{ zcJ32n>~@D2|8jcTJTl9EbvWK^j$g2=!($D7y*?ffPps=thv(yJy*fP}4m@_dI&62o zuwGpqUUpxszI{Ay);Ik4xZPjh`@m_vd*U_bmtNQR+w1q6y|4J=;fKxsi`Co1%j$l8 z%tp36cUav)tM&ea??2tIpH@dH@#X5%PyVz%KGknGtH~x>;2lx9V=lJ6(JIx|ix7#B^Akp2@)yCJ>t2Ee!}{p-`#O@v&}NES=ni`M<`gwado>{A3s}N6~RBO&VSuOZK%rN zZp?qYtd9>*_Yms<=Um3q%b{m|-Xj60C!flwiwW7%fmt@YjB$F{?CM`g+Eb1Dba;mO zZ2Te5?za2^>K#^_bqR%kDjDBzHaGs|Zp-5QwG#Q@>$S>Li2HJQ-re*w2c--7xJE7x z$JObdp0~&22HAT}7kBynGZbdT_0IA6hpghQhs_s7$Q_F=79b3_hwEo#{OfS^-~Rc( zFo2AZFE95Pha$z(X1Doad)lG^yu*LLY$0ONe*MGYxP=NV9;)s?bFTSnjmQgZ;Qp}p zDM)vI`+0x8+x*lkHyd~pl{q|X5?&5+$7S84I=9=?{p$3xedw8>;)m5~$2*_7DrRMt z{pJUxSUJ+jKyWvPhWGZ48_9@tW*g5>51Oa-6Ks28pU|pk!ix88FJu-X_jG^Upd}iP zF&k8SQ6|`EMtfO*aKgyHYhJHz*L#I!d)=$hI<*>=b|E&$XOt`qDN#Kf->)`5J{{NC zrtN-x-0nVn#=Osu==kCJ#KSQm3hbk5kf~ih%ehA-G$=P1v*!}l?E{v3zjk*}R(de= zlgrz0ASpVS?PSBHxiN&L+t6~qLIKxWhR@lMgXspYaRZq8#ZP5LFovqDmih7UvN_(4 zRh)l+j6wM`;`y?Lcp5iY^#OCxRJ=dHxZU;^>LPCkNcMnBam9#InWAuBv6qS}1oFv$ z)>2a@9gf(oD_>nR($f$>+=e z=P$m~+O>mxLEoZ)f46!#?4RyYmK|ihhiJpZLJMT*_`z+!1iYHuLaUJ(|F=ve^I`e^ z?VtbeKO7z&KK$E1|7#8Ma9}YTql->P`%&rBY*hJH@;<{y!BbH>gT+UwJR5X zx4pabX|3f6^Qy7cdS|lVtZ!~Ue8%Iol66gX+}32yg}3F09xGBLb=KSS)EUDm$5T5j zmkhvc!6PVgyV|W)YS)`(Ji-3YV)b#etOX{`{kxmr9oG*J>q&&WBXZr8xZ2#^)#@b0 z@qnwH%ez`%zmE#s9*&qRtckS40buZY2M2VC7ySJLYrL-ojTPhKw|A=#>lf@7nsjqK zAdt{qP1m;g+Hx`5Jyu~2-`?D+CPM;lSHO-nDvV9lZiZ2i4YvLlM=Q(2pn8P;>iO}D z)i=oG&02LwW___2e-A1^<)C+&i1jvqWrJDF4tvTTdUNqptXB@*?zGb({=*tlX)>PH zPY3MZ%lbBhVAr&@8EB6&#NI$C1nMhHgA8RgjC8t39-y**`Bxie_E&lh{Z-7w%X;^I zF5(_+gi{4k+<@+WbT3Z_z>c)@{|*rM`mnz~Tx*!*%>5>GIXygM_lN7l4jYD%d80`O z^x})0S>ExZPv!Sl&$qYh-9c@A1d`uPWzP=A+9Iv7y%{zL`bFIB-1?Kp?KSL@L_y+M zrx)~^xtJ92*+RO$zTVzIlHlX3=VM^6;PPX)09#<1EABPiBYavDoEGFcq5RH#y9xUFYbCy0T+an)z#7UVoUiuRu_ z=f*_sd0DD|SbYFNuww%)0K;P4kIy@;ph5(N-ZQ<{y*;Sm&D8z(0t>tg7>mL3Mo&>H zA~w_gFz3zoB$j5z?*LMtt)BP0&1q^>8JCkHv5hdpg8d<$TT1K-(#?5K`)4fw^iJ=$ zPoR_rtxk5@fK9}}SV9-RP=FW^Vm&w?rz#_k&sSHM8;)ss_~3%KX!Htr{D2gI2XEF_ zSF#a9GTlU;CTc9RbwaY*f(b(2BUo5CMQ^h^frXy|aJwaSG533Y9F_}}cR_a&;&5xE zNLVaxjr02aMRexuYqWT+Wio1C%KdS3y}`*~JT*#0XOBB9myuudc!2+em-~*!jkcI6 z+NeEmXCyMy3oHQ8axU#GrVY;PVk0g`Tx`R!h4{E7xUg7l*%`>`v~u`v$F$gANWruE zUa9LCW5I3j$`1Kx4L69ubNHt{>w7BGaZSaASkcjPt~)3i(|ezn0?Bo&ZkhFO*- zqH;SOUba*ioJ7Wci%MK=K$S}?k!bZpXLyY8W8uRF;gPTsHY|pXEVZg4x7$Z^0N1-` zj2y6Fe~p%$7z24P#lq}9-9KtYu)f9p2Gg6cj#qedqWca5U)r39FQ@H~WdM}&EDf)e zU>Nn7;nF$*Q!VM240trYB+LT0&1qvI33}OQ)IX{j;>%5}1He_0J(!hxQ0$D6iC2C= zrM^Y3k?nmj32WxTbwuAF3YOKB#wNV45-?4_RrowF7;V1yaWFPaL>@>1{e@AlkLwRW zEq^f#osXHe!a=QfxBTJikXXrIAJ#hvcnHZIFS}tq-&KLn$-pzuz@J*d;q!b!oSOLF z!B!ifjaydspHTS7CQ~Ff)3H>*?Hs|I|EZUdzu#{E@|XVoXXYPB+}v+~Q8UaX32C^F ztQ!@(JLUwjfB&rIpF-k#nG5`|b}cjcw=IGq{{IdEMnaUAYT(n0nbzAQV2d<}*(o&O z9s5)$C;CQKuJB~AL1yB*HOq02pQL5O`96{1SJ)TR&>n5{E8zReK*jGd%g>uzMy8;c9kBb$l{u zT;MXK6ADSy5ILTm$Ii4|JbWD!3g0_z6;Z7nA*I>Dgw;3VamEFh4Ra_B!-K>Xubz)3 z#JsLfW+-pI>~vud8#_LR9D^hsc9S%X37$&0Lkp}kso%=DwCnE7ziCSVp}E{ZKgAWY zKoGKa(<-nE+%87*5qa-WWg1yzlTa1jgBEs(#J~OXzkK}^H*&MtZLfuDU+`nW3KL2s zAxxS4%Re}|bS`VP22LSnNK;bzyb_aq+F`}m!@#Vm2w;-SI`X<{g1}iEsV4hDq>X9E zVsD8cL4D$x+wGq8CF4W{oK^F!!XARrbw?4~T7PU#G>9tQR#Mt5Kp8;%P_MIGC@YQRkW>lcrbL zn}c=oBs3_ay1#oy)naKR%quM+Q-a+aZ|};9RDxoNQ6>jdXYdvhdFjtWD&xf;KAj2!fghvXF%d68GeSc?&6@7~B zYJ=CgtHTb{={94#oHU~sBuNgwxa1aOQrR?LaK+aqAcs6*I(EA)iDGyNxic*m2N+#5 zJg_Z6QfE)v9G~#UhnT*Z6-U}Gy&w6aFIK+~nkN?;9Ax-VwTa^u=6O&|#*)7wR)JdR z*?rK7;{hM{RJ^A95>y4{B$Pl7coi2)etN(6`O_mjLgWK~GLt0um>3~m$kL&YbZ_67 zp?8~GvpmWfT0*%|hu}I%$58;lT2sYTYBN)xm88VqR zagxGcM9>nO|C}p3W-FNhX^25J60US_OJy7Z(nC_w7{#67S(g&@h>e#zSu2xGDNIV# z@LiS0K92>>jkYQQ!PjA+QO4^<_n!tKtVL1fEWZl{9ZM6giaFd5Tk@IpPvF2mJs(DZ za7S85GpfXlXa$Ad-AWP$A#epobd*#}?y1d0CYU9Aw}ki@TRr`!pL_*0qL^52P5ngJ z37$i0>^-ubjNInOdy2kDeiLsb9ft6`{E=3?Ic_V185=;2mgoQiQzSuJ|B;;Y_AjLn zLyfB-0B?yqe!xn#04yYkTOK=R~FFVPB$DtXkKen zSt_S;8HnMslFwzHr!_E^q>TZsOzmYB(a3Wt+v?t;5>$@*+yd~6bFuABr$09*D<*Tx zrvi6c`pps6Z?7>$_kdKCe7oO#ZrbQ`QhHxQnnd$~m9va-kX7 z;roRpteh7!-$H1WA-{N0{Tz7_VJtBg!NP`g-gRj#48S`Zra})aWRxBcIFOEE-wG>4 zdTvBB`@{b8L8FJ%%YN$vssEI{?>M_x&CpT=RB_mo+kJzuVb@|uz~!zK1D_6r5+MI6&Hy!HR5Bx(&>Cy{R(+%-Y01RV%cn{abl6k!kFPD`S|17E)9%I!2y@D-XVp0 z683DIQj%xV)wkjYF{Ngwcb&>eON!|=qPyfj^>1h6?w|!~XB{rly?ApF=(HE#BvVt? zo?QF}9Szn8ob#>6Zy!#;=OU z;1>AZ2-2E&3QcIdfeGnbg0v$%c^7Yl{{!3riGm3KUlaTFPTdQTn#%)XkMgwLjw@ZXIu>8tiN?ymaKyXG`zv~ z!Eypa6Bs1;t3lrY$VVB)N$K8ZNnqVUxS zfy$r^yEmSI&Ic5vnO{1Jx6NEb+Jr1=3BX~5gO$~N$0Q+W=L`ygxVua=4q z@lz3=+JPyYpQprB^oPdhobb{@n$9YM{3n?ck5VZoXAQ5&X+A$dt0W))2Qrrkzl?%Kq+5al6zGs~Er1-D#1Z+8~u+lXQY5Mq|Y z|JXsJr_&ZBVDcY?8@Eq%2V$hgKiAh(kb?$D?{&;k`NXfRhgzvF0}0PYC4a_mT81u% zNqkmW4FR_9U_P*Q{*wP1i4Nv);?vKy`r-8mMDmKfC*j3V24l3f(RsL|DoEdsJs)lX z?ec#zAb!YPGx3x!TENZ{aLJ}VsCOHnv)2-_cm>_S-N6y;^J?L8?Q$sra-inw8%7Kw z-TRj~GE+V&2T}u0vtYTw8Y5YTVUX^y)tI)QXtWu2O!(Il?9vCyLu2u79lp8LMecr? zvS(AIk4qU|h_+SoY7UE0ujMWLKFQt3=mJSOgsLhc-=ohO7dNgn6+($ols@jCBuYhj zq}lTLe`>QarqpAy{#ycOi}U;oiJ%o?^K-M{{KYD5dT$VAXnxy|Uh!-v|Et2F*S6TE zNwsIsQB8_nQFL77klHzsFNjw`_3rHdkb$&WfNcC%1|o%wS8gRGV{GqT{#yUWr=lqk zW6H7}VaY$Q9&JHsskfOSezH^3`5S_mBzV?{LyYA2Ycn`v^&_`#v`>S`6X^$@jrd^l z;(4ceWup9TmOQShWRt~1N{O2Aq7v`4Spzposku${95v(D*9W2*DbLUe_4{`&6Arhx z9@2g?-4pkIMYzaLdHS{6Hf?g)?975ASa9$)xe)I+LuLv`7m#@6Mw7F!VK$y~1gAm|`b?r-js-}RphhwVR+hFH5w>m$jgO@K+nAa1JVW|B4D@}!3b9;KrY zu!HM7v4L-N>$<^$6={z3{jAl&RDmn}-Z_VP1J069(KgJ@P>^-hLsF+Xm_gz#)XBwD z4i1`t#dK#jGSgH=z+%4Ix}Armg(Z35YR3ZFCks0*m$Mie+vD_|1^An&1FpjI&9Y>Ni!a_>QN;I7a!Kf|#YkpPa(P$xX^5@m?g{ICgmew*8 zCdiJi8{;`Lg?j=xYZ#q^%Wni#RoyhJfPi*6qZ*{)WHsJCBdBx;*P?%owM!U^nSZ~O z>FP*u7a5xfoE~@m*KC%x-Ixq!_WpJ2dOJH8V)Q+mYOzdo+S#__Wa*o(WM6ED4d{bF zwG%M@qix+-2$eVx<4AdbEL$NAG?=}_2-3SLyKsGayKMMms9vzHlAq`7wQ#DB;0_t-LgB3ohTF<6p<3 zJsPJN8Je}yZ&vPY7%km}OFYD80}(KNla9o^qdD-c7g;Z4JkP^nQN z)X}9?TXXHMN-?Z?80RF!K@$rrwFSx{=gxuQN_2w9-gW9_7<^? zBV^xX6_uU!j;BBJYh|2jocEp^i7KFJ`1_lvLF@Pw{{)b_@`Z?VJZdb0GbyOuGi@); zJs{FCiJqGP4Jo2ZQwQkk8@1E}QTL0pO-Dvs#$%a!6ST=dmfsz~n)732`Yl)nR8Ig* zM;0KYoZt(sPjsJ~MUzRRIn7m=G$VsU%0tf3rC4vIeL)r)2^(Dy<(J2$bwYmIhHmUK z)=kju|NnI#-uoLQYW2Guj<_XjOW)el71nQ&yQk&324F#9jvYD5K~*Dfs&zJf&5YGi zl0j)@-mNcngjl>$5X-xRb0`H6yAa&EOwvhfWP(ULC_cUKW_Ak-Bry!)Lv-{Z6}&xc zSq6n%>-}R~DVH(|S@#pJyG24GX$lyCJZA-^0CuQ+St^k8y zzRismP9)KQa6pi-Efivjj2wyknl$~y!eSvEhWzA(>3RpBYbhTr%v`%I^^~ z&*Efgmatghs6!?LYjvxWambm)*?6CeHjH6>)88TzGcCGK<#@_w7Lf{3>M&+-HQh84qHO_uuYpVbL>hNRKaVI>iWTUmB z5p?7jSuZ{1andNJN=D~u$w=rwo%j(U+{Hu-eOl&d*jG^-W``nr<3ZNRk9PwK_*aCK z{Pl(+EM%UK{3b`GCOSzui~103K-z3bbtNLcPd^zwE_+C5V5TLG7OH6k%TVke*Sp92 z)ps;qK#jku;Yn)o%{ZxndnEMQg0z+52D5_(QHMqW* z4+Cy$^n`y3e{{1p%=W9;oe{#8OAQ=llt#yF;e?*5`DOcvhMSVJwn_OOIi2CTwdJ0N z7!;4lIB0WZmoo_jK{V!#nNrmiy$7KYf-7sf9I_UhBZvrNAF1B6U=WV&Kv+=L$KI2o zn#mI@Ik>Y2v=hbp$s~5=qRPrlBsmT_o$((~VX}l3CO;Q&cXTCdqpW z={j2D%PLAJN@9viz>}*_#>bF{XjBxCvtd9X14L0jP>-qVDNiZ(5S_k2*JSGZ3lDS&P?<0|IS3eoK->BW?&0+HWE zZo+K`{V^<|!vo1UtHDJ9<_T6EslSfrQ#COdvNIJgjiLFLjD;cc13_GJBA47cll&u= z4Gv=<3Ks~6bE!gAZLl09onn$CN!||$JeXqV4HW_9NkW{Suf9*Ki4BWH71fQwIUEpV zaB55nMN(kbn|4+R-U|*G!l9c2itbNSg&lrVU75a#^M0^roF#u#D~htGCAK}W71;77 z=p>J04se1W+94$oRN;I6s6O-qTqt2jUtyYm*bx7GvC98MX=*3`QP@CCX@#7B0dN7V z5gwt9t^==~qCL%p)pmyMTn4@2=zBsPb`zyqN5LC2Bv2YhQuk_ z*=e*Rxp5ALZm2qBn0HnAWCgjQ#To;Lx{Dh`AEb{Ao8B_$7<^seM0kooJke~9L3*Sz z$$c$Djo$2oFg;WUqtt_PEU(r!l^|iirF`W649rto|wUYD%zem&xX&d z==4UI3&^#_9fkRLB{u|PoMv$Lha#6j$XgDsTg1xqnPDN4b4}O^m!Um}6nm1MSDb%5 zui-bgddY%w{$p@(EYB)7$nVOFWZFW!tmOfjv&xWjS;f~{kI(oY+Hsss6pfLc6d&`< z1c=(wjY9A*dnpZ~&mJc_0By-XSu0KuQ;5KJU^$S5>aC$sDc9TJ&uS%FtXGgi!j9Y$ z>8TBJ_12ps%&N>9>>>(vkDY73e|R)CtPFwWzj>88z#E_Gb25a zq0*~LHl{#v1vnnBD*13Mf;Tr|TL~bC^B%6-GgmQ=X931FeQ>==FWW_U7Qbncs@xwh zUD`?G~QpCd*2{8J72}tcH8-`kjXn~{f-E2)PnY|_K zzr5R_dhx@-2-BX;jMg^k3%?VS7bn7=>_$iejW4f}SrN3MPE=)P?gR;UgRv2MRUo<-Z070~}Om zcIi{|h7GlM(Cfo*!7r*H_#|C^OT8DoQ1QB*#An$=P|HQ&OmDru$=%OpnH>g@R%B7b?8I~5nsq699F8A?RA>ttOk2V9?^tftF$%ym(u%YKlq;#D^W{iT$K9fNM_MCZe z#mVvX$0$t9VBUiXT%5C(0Z$-pU&jf0YE^>~V=mT5QS0dC^R-F}M0!ATh${&U@{d+d z3M+Q2;KTZRdk(Gvm+P8mW-lgbMuS!cO=|)>)^rdz!u`f+Lbz^w2K`WlI?;MEqO!wF zo9XyW3uCc}OT>0rp`5k+TGg1hBp6}9MEMI{<}o&L zyYX5*IIG>{4M*I^SURYV9$| zHI3wvsBXBFx-v;7_Pik*B7IGaUythP9ue#URMR?etlv&{b6V&awIm!jT|jC*;=?aC z+%XknQ=S4$H!cZN+rjH&2CrUAG!eibIRWrT2AfLa+Xi%8)&kS-p3w-GS90WH&5k4l z5bh^Z5z=6?eT<4MU52XIY&G`m8#-EJaGvQEj8SlW2N!_8Q2m>h=4gY zy=*(v32G1;Bd+PSbqEp*7NA-&%-NA;tMSo{GsU2R)i}m}?${YUJV^vMb{b6yq`XOb z<7(>iPXW7q$_W|z+OrFP=?{#o5I2aII1} zB#Cir?lX5!cHsXOBV5NKTy_K?Q#okk&Rm<46Oe4Uk{18+t7^2(;QA;2k_@wh%=EH9 zbmR6=rXW!1=1e*#0!a(J6{~iXQuMCfC21=n^U%O-Rft6r7-EocP?Sp{-PhH~p42DS zyPEAt2y?B&$wp1|(`3)g2YY7O{gXI4?v>iJoKp= z4S(A2eO)B#W3yy1t67dFVk9za^g63i0cR_5*cF{obtebR9e3(Uvego^OA-9C&P)Qh zJf~JG?NDq|%1p9az<)wyWl_U*&iW&ul5-h;bp8{u@}Lx}G%D?X7qrqieV}Eem8l&rm1)3uU6{88AfmXaxKuHDWuQOqCt2Jt^MNI~9W;z~(~O!e|qR z&14=lYiN}(w`sbV`;0NCG^ajwZ#=Ox2+NIL?U@-n@tlJ~K9hPF_4Fo0;}(0$IuZfQ zt8+Z&LX(*}bY7O;xw01;5-urkhU6`f?fhZaqE)^~6s}~SRqu9dxDihPe?C%%i0q!l zm^;N6EkchMbHkNaQ+Ns}D2fh&QiQ?^d}RVzBy0M~d|;Ql;+*EKvj|IXz{1<0^fHYI zf3tIo2ubgW?l$^okCA{5R!8#&GC&Jk=61o}f zhy(QMLP8M}618Y7>f48h;K?aJT?n;h*IgqD8NkjSwiIKVMU-WD^=C0^$3=MvqfmHP zfhLW$EcPj655WDPyV#uBw^h1X)>v8&N|X?Lbq*Q!atAhZa7+jrNE#)ac*nRk0BQ&r zi}}hP&MHi@&rBqLOA;7vVqa;Y!qN9JZ0<0n{gr$X+c6=)=G%I39m4BtNL)}!ChAO@ zmesk6?`f$KWDzEDe$X&CDxE6?z-UeKq%15l{|J&vg^trdSsO>xJ&M4R6d?7t_En=V zEL1|NvOGSO?m=3nNhP`bYRlsfvOuakV~1PGoHJd0&H(K;mtHVD=7|OfsakSnkvwkr z8=7iRPl(FHTn2+OSd&3f9#s~i$h1*cQ}_s|7VFKB(Y>Mpqe3t4I7qYKa;rtL$N+(6 z8~_`@VFIGkz_POklcX%arNUqt1-QEg@MD)xAn7<}8GTL7LTDa3){&?_QU*pp?vqh1 z$iH9>v0z#QJ2lb*Me8zIF~C%&Y&ri3YDD8iI|>>SWnT(EQ>W%Ts;d-W0BmJ z9RV76J&-$9kyDzTERT3kL*x(P0Q48>^|mu4ZbuRujXHc6x6!%&puKR5wws7QL3N2z zRVO?HYclL>>Selcu-92cD!*NUSHkg#PfT9w3$%L-p%D!DrtK&c^M>Jj;Bqr%VqaGQ z^F9R0jLOr}++>mO0N7b&r;EwQuczd#Nib;93hiv@+#Obid)Obs)Jhs&|C1a z>yjhm-&2c+CiOyeZ2u0%$fl)G)DE8I90iHEVrs5qfR%IOZF?$W$ZZOnTy2T-!wc7e z??B;F#u*{@O0Z+OBumMdc!FG|V2X~n^Ob%cRG=O)B7os7*@$MlgB)Cx|4dLCaCg3_ z@PQcLOX^0q%v;`!Am~|8F|jV{^onArfE!%KZOfEDEW~qlpQDSG0fBZn55)_!$HuzF zq*JgMR_^?^Z&Kvs@RRd1ChY#vNMw7N_@dE^8j7|N<_~BgPWWaVzIA*kh7(3kE< zV-)}i5paA_=5A&jG20Yj&Ix(9Gwj^bSLaR$HWutU!n*Y$`YOb$7PNezZrDlIX@Xr5 zjTx%;coqvy5HSzHYG=xemdS;_&W6GL77M}MzkK(_4?I}^#FCGciU)=rB~p!1^diH| z!{t_lWbn8zYOt)B-n^(E#Q3*={(sJ(${bC(=(8M!w&gLJwwwa-(v+vwuf1loV(%uQ zsCING;mqbkeL90Egar4v^?+<*-@(gR$+r7ChOtiQiEJu>;w{BLx4s2B!({fq~dH;4yx=8*EJu3_zmFG2OY zAV4d>j8H~A666Epf(e`iNXPCSj^GFc*m3kM4#32F*-+Xt0S{3Trq%CBfJz*N?3bq( zY!f|=`@`}3IycY;nP94F#}gby2lj^WtT&g|zk?jax;$B_9)WJjS~6s02kN5!g0DG? zVbY8rP4*Cz+r!OfU`k;;l;9a)T)|@Ip!3qm5=FZq@I6X}x6wkGS4f_gj+5HAnyAm|fUXa9@*RA=?pX+PR zXqnaK%DtNna;?C4!X(GwN<4;X!vT!1?BKz8g%%E(Q2fIu18Q+J9F5!@Up8K126$RL zp!h=~y5RT|i#?L*pKn`^U?KA^QH6B|?4e=#MdfuIQh=xmaW>Y`sEFsK8U)@hoSFl0 zJW1@)S*#1Vk^@qvU0Kl5CUo|Nqq5;L^CFB6x@#nhY`w0vX0)A{>Y`miRQTh zx0G^^@R0d7yRG)nZV!B^-W7fEh$qD(OFWDSf85poh8Ns>xnAu6hv%>wKOoVLTBVyG z>~rEMUm7zjJ}Vw-@ai2&6>rfNue*%rE#l*n4a^OegD8}V`!*^OWM`DJuxX zt6p=d8O6R*kairrWt@v`dUXdh5=q=A%iUNpvzryl%*!_~th=i5dY9ATT)g~0}jTPVG^MU}&0Z!}oa7M3qbv6)+2XxAt|6;EwwfrJ_F0S_x`?QG~G zBhBX-IS)pq0fIr-MHuX5SIK=<-m7dd7>=U{D85S=T_j4@JRTZZG?I#niM4Q7?8+l7 zQ5@6lX9b`^TnV;orB&xVKIt|1CDh{YCLZ(o8{oUPZcMI%4cf-sp3hy-uG^8Ib$%{@ zB@(L35gA%Vr3m7M4 zWXEg}kNJ+N>*|i`UNTcb#z;M!iT!l>=SK8@?f#{tYkFb^`G$g(9VeBO_NYJa2ZER* z@rE@SUuKvf+AWroAp|25s;f0$om*yD8EmMX9#0X{5V)C@AbQD-6EP-65peMwC)bJg zY91vvJ5Rt8vd;u~pvrXlDA3ZTe7lXuoFc`?aTLk9hfSF^Qx=#cJu&|{Ww2;;yfsr{Y!84uIlQN_=_<5$X5J*ZdU*^t|2xK&l zaZ|~yd%YofsUQ#Y6^LW)`^$*koBaozE0NLQM1sUltpK_Fyxg$D!7){Kbm8A0uCkhQ z&Lj@s(xtIx;PyqUQ9?irk;JYL9XY9Vd4#I9)?*Yg;3Nv^dEe1x%B5&%2~I6vwnDZh z;WWLLyXPq}4+7+rENkoQ7s_|M#kK(Q1=w7}vF6ehlr_8?Br8@Fsj`5@#=oql#zdhY za@@eQU3Eun1epXC1$Fansf;ZOhIU^;{^VwK|N4|*my>C)%m&`EV?|~2X_?LcqES^v zMsAN!+&JRq&p}6`y9U~dX$cbK!8tincOGgLv|P3Pu)!j7Z8Yv-wO767dS*GJcp3tQ4B&Ddi+J zTE}LS#%H5^F8+PGuh+gAB~ql948Dd5+MfHl-Y}v$P)GeTT~xY+F;cZ&^Z5-?;%y-% z%p+{@g3oF2u@w$lj9sJ)rMCN#v_XbS6I$-?6)_dHdgK%JC)&YORc>|9cJ;+PUs8`& zwiBn@0B@v#r+4sdEZrWzoi_KKN^Tyw28&@JDAS+@P!JWs2NG@rDRidNwwmDJ6z746 z0l`u)7U7T7tir5zpC|Gtxt60^c$89mW_60OpCP-8YLXRe{$P3uJ34AEF%798DRXy`ZtB(p5VtP{kTxaCl2dnJb@jJ5KmC)nkSf9r}*Mx(~!a znxQQdqL44DAW)N>qFOuvd`CdsP6w5b9^y6l93=jXmV^smly3PJTmC1vkanQ=y45eABP;L!##CFXA14maDK z<)cxPFtdxM7UY8@gGo2%1|ttX_@T|6mCRPA_?T%fK{OZz&^Y$yyy%qWCxFap3y9U8 zGRIyesO_l{SvG@|BRHoQLkRP1A>>>3I2(ow;!J}5&PW7Gq1)9|_;R=?QgjV|biENx z;gM<#H&0Hr?!VWOp&~BiF?rC1UQ<+Lf80Am}dd2^su3z-o+v(G;eDH*8r5s`58cblVk7=L@e zdGu@C(Hh2~d68RC*`x+NUk1~T#^)i!^^Ip6(s3y2YC6+?<=4502yv=8D?U!5d=#hH zE;~8fMveo`)B&!ODJ}0(uHZJNZ|2KobJC8{gnFc6%NZAV-@m4m)q0ui@IXkJzZ3?A zVr|g5r)tZWA`E%eE9<2b%fuM@oNmx=VaQ6_QA(iQW>&G4zZJ}4j7l|%k0VtU)pphy zXY!HPd>nvnNZok@0vSEB32WRd{Usa}ENe}ikq?>daS*wWRbrh|-*XZ9=oQex)V?sK zvQG);F+91ZH|q(bL1MRdYr^S9<3im&@J5V5c*Lc6?6Zzzww$-MLPVb!v z481c@gaEPxuY?XEaZlzV?0huwz)BpD@`~59B7n2jM)s_r6)%%Gt*fieshN*Q^Qqm@ zGn0~qSAU7M-MU@BZajCwmKz$49dOmWWtXdKtH3bK83etg zE=gIJXSbA?Ak}|2gT}o9J!Ak%#LaDP|0_8bxj5oILA^*^>RQ1b5QXfpAHq@ z0>-%1O@l?+-~S$wVxWdAYwHKG+UnX$Gfp)0B`mmNaE@oEid>al$TB}#mBLU^?7NC4 z6FrsO@wf6|q%?s$q&EcmR(R4U??YzY{KilAgVtRN70a)_fU}s=j!e`v7Z0=cEG)TJ z@gPH>xKJW)sq1V%^?Xya+F~4((`(h89xi@Me~@2m6or;zPWSu`pMuxShaUN|9fjaB zo93(BRS(WpDmfBc4$8gj^6QAEa`X}JtHLv4;_57!AW-#FFJ?`t4Ti3Ri`cQZrjk$) zj102Rtd`_%s=oKQ1Xf{xYjbB{NZ)Gv!H^F&vnU%@y+0k#zAG6E4+rKX7SP zpm^eG=L;7lojj!KhubQ52~9Y&-*D0kWM9~FIxOPH-C`j&_5^&vnfM6`OjjVY;3j&7 zEAYk@)a1|bm>BOrDvzWFZBCKx{HleNU!H|`Lv5roXd_pE!>$D^xBrw6%?3_t3+e7; zStOY1LV(=IJ9l{8aBv`xdTfImSlD7(>7m|CkajMGwdl37)xm}M;IXcX{lq44+{(A2 zF`wjHw)g1ox&3~i;FC8A(faWvu770rC1pxV5=MN2Dly28I?&uO`u`bD722nm-9a_1e4;216qPgU`F;M;^JV*4_1^rewY0!zUf^X zcq*W`cL;ISz|ur?L5(!KR5H22iHz?x7p98dY7EJV)1*_@zJG;NFviaw4bRpT8z)VTQr$?H#RWcCbci$GwuPFe2M zS=Kxtc`%;!rPC^ojTod`%=Dsx!b!YlCm61H!mzOjy8wi;yqji=&&jmR7RM$dRPsVp z)f|2G&;l6ti&Z`(P_JpH7{``wUCT_HC5{Bu(D}+j1h%?gk=W^(;w&F_r9C7rpw=f6 zgD4S8Xq;L?1G_0+1--7y5ZL6DQA?XTliQ36k&+3fGp}3-BH60LDBhUr>2}eu1zl_ zAO;|NH*V66V&lPv0(OcsVhdg+ga))WEr0$oqjKeZNdT}vO^ubV9M?3F7S#^1oj$>- zkFsI0G6Ijp3i=&H!jDqanzIH@u9=z{w#_A`0yP$BQPM;m)`N`#W;L?rHu}24$yC<0LDF26vRv(J1&^ zqJXkM46-KS0c~mHJ1%LQL$yrIlM;KqGOpRR=ReCg05j~J z>SZ)I_@8ar3qfhu&{(a1wSK}${|zpXTb&NfntA`iujtsa!( zqjV^8UGXz8Wvqvq)x9H9G*^nD5BQ9~SMCScMu33e&Q^YQ;cJRTFN7Wi;rKt(J6mViSo5?v4(Ol6P#TpQ8l8 z#3=-uj_QAD=PL)clE6bT1o z@9CP8p2MlJ_sMnzu^efzAd5ilezSTK7s&CM5gVDKoiVLZ!X@+KFnkkW@PDvkV;0%&7fwYYc8 zb6HP_RmnVbZRPA^rQt_7vN&n+=_fw}?0p@PRiN_q5b-P2DSLspc%VfNpV(c8i@-PyY6Ip?W|Y>dk{aRm=~Wm6Cv_JN|s8%$pmd=Fe3bQ zxgB>_RI#*dMYmSf*18VgsRu+uMc_YiDrei`W;rk{2miIDntr+Gr!5p@>oYDGfq7&Y zG0{-^_lyr~RR2yzYrnr!7cie)u+4|Bgx z*468`liK7h?tiA+ifucN$;|d`-Ju^PO%1kh_6^Q3XyJJ>bny4%>lelP)>+w~!;*LL z`|&QZsR5TTqb!?QfB`=X&fsde!#H!&hXeVDs}U%-zW1uE|DySf?`TEqDD!WBtxo!PlG>UJ>E z$BmbSvn-*rciHCHYeY;ZX0>6Y7_bU)qwD!WmD!3))-O0jVJH>M@el1N6?i7;1GNgb zBE-cJhIAdhRc71X0Ig=>e1SWePIJDNbX1smZ0SY<7?j_U_^7Hiq=e%FyBqb3Yd$TBk{K|D z5e9{AHcp0&#UU`_j2+OWBXMG-1Eo5^+|T5A2aY++R}l^{OKQ-gVs zL|28sIp_D1n~LOgg|{705plu2x)6=)V_&G!3|`)A#x=?s@K}iuG5d;aFBH^%f|`7T zk=dUik~o9=db^a+c+PV zK3`f_7?ng?kaMtTguG%%<1noa*f^?Of6DjbgCb6an7*@;?FU*TuLsh%)&e?+BOug2 zV@+~*A?zV|& zWqIc(6&>K}l`#y00jUIf>5K!+lob@HXm%>H@m@!Xst;udKb#?*<|73r`)k?M-XRZbbZ*MI3i!meP>5ZV?JPSucBP}_Czp(c zH|0}00my1{Fp1$gV#kHiTmk#hzvL9E8DOe|-G)OpQK^s+tij*NLY`mKtgc zh#&yw0)0VrNB3Yb76(5eMxD8Q+=6gpEf2TeNXxMXs}8BtPTjeTNtomu6V+*R2ViFy zDCOnJp*jwU@yh4lGkAHTp$FUo;VK7ABRi&vXDp*)fgsBv5aW{&35X~@?Jd;Jb#V`K z8G3l;Ro3XvJLb=LxdI~UJfxs{Yq42;5BEr-aaabIJ5}=$MzH&HV|rZ~G9QM}7^bE& z7R>!tFpWxh`KMV1WR{kU0#sh~6jP~r8)oZ#cAb#ib!hMM9Xc9`$^fL*ot1b6FLNwA z4@bjSt^gReyc8a35V90YR?~5PV@JI-gk2b&K0LIV=&8E->Mn;O zPr(meRSdDqbohv%R$z%CTk^-Pd-|qF4eMCMJ8zH7tF%oTP|7(wu8s z;8qN;DJ2x0{c(f27i1?_;^XbJICVn0lmC;Vbbxrje(m zjf{|-4=&q-4|x(fD!%-kuidcBWTjt;L+@x*jxPVmYWOE*F7 zNZg)}?UoYft}A#6lWCZIzH;uKAaRQ(kPpd_FF&V3-tov~YW-DeAgYDO-|oCUq~+%K zCIqsx&{cyJ_-E|Kh=Y->VO>m5!y6tTtIDV6IaTQA7g`p}`XbT&ny}6onbE7ZQocw* zDqNKdgk613;m+km4!*T3!aS7MeAVM#*}f=yonONP*?3x-_tvA#WM)U+uCp#C;Qfd< z(p&cJ#5wsVl7mn?pPx{>r#naBMWsEW%hhg2~t+q-eAB$gjAmCt3y7aQsPE* zEX0~6fVMB(1B=V^c~lzPpSz-v7DkCIF>asAnajea0p-IY;w;&eM$$f3G@3ZaH;vg* zUq_Oa&O$fj_I3sM+=Gx1&hJ=E8YZ|*0%UxmfFrMPdGAkvC69;KOKnGDi(Ecti~F?+ z38(P5wC}yHZFyhCZc8K%Pn(h=R7I(}(pgQtk!>MmF`i@YTfSpUF0ht`wsCjdk=vMg zohzk0t;0%>xbYoc$`)e;Z5?G)OF8NeZ}|2iN^!A$l5ebr@%a zo@hjfLjFO(rpL_k1#G$pB0O_;`I3f~;J4=sOh82u0oJmV0=o42E`8#BE3dd;tXmCL zDvZ(27Mcpv)&>Abta=#nM9c<(qDY_X3daJIyCa^8M8!_4S0iJav=@BD9ik2{fq?Oe zJOZJ{LQtHpgc~e0ZQWbI^zs<@rF48t{T=cLjFxApL>99VdqHxBf}^eV0EpJG6zI(r zV>tWPJ{9nl_;gN44DhxcuF#g_s-F6b3}KYQza$s!0b>)&g3&g@($L6K8h@yOJ#hfy zkSj?;XoV;Y^vz^XX}Pbsk+iU-=T5Mf0*Zye!rt3hw>Lu3NNLFMxV!a zQH25E<6zlwZGGHqItU^yXh#UV$wJL%69{zcpTSQ~u0-)b%l*mrPd}Mku+KP$Q}|z> z(!QdjtN;YZ&J6NHj$x}>dn;dTCgxoAui-g0ix!V|iP@&{u? z&=ng-PsS8xx^9Y&VcFtOUaYLR%l);Ufh&_CQSH*o)r^hn3^?Ae&L^rR;7`6sPsW0B z-7rs!9HVrmFx23+^@b%m8Np6Y`OvjK&gxq=a%JO0oC215% z>Q5ksz~1e5e0tvVfgi=7&c%GOGQ$3bCY0($<^rLsM3Vo_t*oI2FP z%z&lJ8)@lc4=+;|N?V)}NnwSw6|sXymr{nk?GG`z!POGXc9N02(d~r+JRa zoc5=b?^kQoU3a;-NRZf+NgOw&3SpOz_={ToM^@>Ti{)-Ji^*lXsL6q)1mwn=7;~|V zx1VX$U}FAc1yCEf#N}MA=fPqIVq#T!aakcTDgH6}5Qj@TvmR{2P=)kEu|E>1jV|yb zBCJk~?#t|z1~?gXqPQITK;&#h%GCkL`M1Q|pnfm@ni{5GZ_(72)PmU~D&i35T58?r z)YbLAxr&F97)qQw8Q@ostjF*tZN}Hj0$vrhBUu&UQQVIuZ}>`5ed8607SF}BkW&X$ z*rjd?8Ub~cb@dPaZshKHS&hSb3;{NA_;?Gj_7>^(m1;fP=i{Li~PK zf2}hfI0uC~>WnQR<5V`o&I%+t_obqxDJqifFu0;892cu0XKAi|V$HV{TdJZxWNG$~ zuf0_>)!g=_b}k1FXA0<5$$1<=LHTx*0pg6N9jN{hK^ChJ$ zUDVEuC|B4-vjy^B_N4BEO-|Lq#4aE7!l9@#eB6omL?5;1+ROEhd!%A%B#Nrq%kvd4 z?Q2^fB_8W3jcJ?*Q^xSjfz^qn_xWDUG=jqFoUiEfqUYI$3Xa1Y_#mS4jh{CK^kt=I zb;cwD-;05kGPrh_+jC%zNw%*UmMwYNPeV zDkG9Ipy9X6siR-4*)LI)O3N`r(-8OEmm=x(t=^jH$`(`~azcIU&FWV`zH9GuC-#hQ z11Ib?C3O_98uUIYHdU>^WkABYxJP8jesH4ds8>4leQ7V>riHywH z5ARCFB;MT%#OzO zhoA!&n4EA4u!8->ZS+a{;5lHX$|`HCE)l$1>vy$=H9NDh-ooWbhS(0dg!Ah5piJM$ zSaXn3VdQkcI+4v+F2mpD3slwcpElV>+11{LtkW~0bM0$(N9GS^R~lB-_eY|QTD4Ya z1SjJt2(_Rf8v?Zmb3(WodUq0!|Q9v6L;&&;Inq$Ky!wT!M1Xi7D##7=I3y=_CNz?*~iG(+2oQB$(*Z@kvP4^lzL zK2FbNr3baF52(t~SCOzBECX^G{I}D4yRFean_&;;AYu~SVwf+3O`cMi*qqW!2;4AV z!s4lx@_9)0RGUvaf>t3}B7p+O1G&>T$p&byuo+HusCG#YnuQ4C^K&C(kFG@Or*vm9 zo-H+qm;1A*U~dyFqWvv~48T23?rrmd`nXpnHI;LTwj8clqn*$T8vn5&d)x|PX#gTe zA$Cq$1=*&ff*v8zN4zJ*=fpF;uP86kCLfwP>`>#lg3+NT^Txps=<8e_$;zVbype)1 zwm3ca+-Nd5n60b9od(Xv1RE-~row!U2Z*{LMQq2m@)1dXS09R~>?Y|Qjtz)2%Tbqk z?p0S}vk+e5j$0_iLchI2_%mUq6ekt-l`PiZ_%XNZA`DZ1K?i6z{f zKmX9}OzbCxfqovDtA-qnqGEw;7x!_D-l zyacj}_k1<_ta7^0yg%%TEe}6uQZHE)n!oYT(yXuiUa|sHm~@wBuXi2&uE58{*x_p2 z6=l1o!^Bh;rIyyxvNhQ^M)&J87OjT2qJ$(}^S4pvgUAaCJsKu?RMR z64RGl6=q#Zdi3Ni6bVtIWh}gXg39OL_#*ZV9wn)Ny`BER^iXg}v!i5c?17TIU*GE{ z>Dc9QjXW<7Pw0M{aBz%hHsUV$yX8(v?JceiFa6EKg~B9KYhN@Z zNvttVf+$uTSy}zz`q$KYK;F0qzRh9JvZCt4F4lI&=f_9VYOs@^#Vg6oG%jaRXP-=b zg3TF)m@%KkVAom5a8MYN&?)WZMZG$Ox%$&4r{Ox+pJ-wvbpGjC^7_pqv~pp==;lhS zKmX3^b=hEcXE~GPyWD-rbbJ;qJESavm-Z9HX~I#Q^kFh7PuVkK5`|rkNfIo?a78*} zj#Pxo8Iyf5kx-UC3V)CMpU7?JD4lIYC^GsVF~M+Yt0A`*fkQy#lL$3-Nl#KuY*K(- zn8rTDx5` z?_2+U6Xx?cH#F9_6iV)@x7#B&i-l<)7=yiWC&SxmB9Iyg3}oofmA)%V3wIXev`#W( zU}N(rRBqhqlJ-CfwgwUx3vFduzQgJDb0xGSt^0r^+qm8yQTGd*O*^5OsWKJ#hB!B@BKwY3gt7YjlVsF(Nw^AK6b|Q%+hHetjn))DUfCrwCanPYW^;Q{06<$kSwe zks?`39OPNR%I=k8?4TN$_hI(jcS!dX=l&)bw7OFfE?>U(>xU<;G=~<*% z%PRB$`AVWo<3=h#5dB#>hEbixd5j=)kxoDJBbQ?HkhpMtodc24gmIe!Jrrmx5=#0H z<1!Q1lG;o)&vn~a5hn1R3}Yt>45(RqRS2S|g@ev&(ANd1ds>`F?fX(2iulx`tVCny za33A2aGu+{n8=-KuS9Nk=IaKf@Zw%R;f)KKPU9c84-a*jd_ktdHTi9rIAr}N@(Tm+ zWr;q=?oypDb2%akr*kC}f@rU7$%R@LQF8hTvsCCvt93#dv}elg(ZGQ*Iu*_+09+;A2DKq!2siUCli4rZ`r=Rp8wxPNFIU-EK!ZUT+4D*|H&+W_yCH)jTpAY2S zuKCzUeY>QyKyg=C0Tvp>qC+&N)21>`HZ4$Yk8EdsiD>y(#qVrbT*q*_xo#vL)?tcT zv&R1j#L#P#eDR$+RnIEs&9D7@ZrrlN8+Hh(&YQNS%)~n`#!oK_8MK)7UhV){Jd0Gg zi0)OGCxFtqN8=sj1+a@<$p1p}pOBM?^P+H^c{(LppPi6p960gr>&|J`TFNvECDd3p z((=U97AAP>!Hz5wJyBa8;zyI*#&n8!N~|D9%TDFUd%63=jhlXzY8$pUjk*yHaN-O3 z`)CzPTxN?9FiHL4eM}$ci3v7iG72VuO2dR%uw~h11U!W{+`kIn0kpWPb}!iz1Sj&Y zP=%}qB(YHk-%T#N@Qw%zm_5VoJN_e0Vz=AqMx=3_}SkH zZIjRuBjF7FQwb`%&!|kIi{cuCI(!{3GB5z?VDhbW=b@;PH4|UnYD-&|du68L?a6=&gNsU+tK^EMsL@wz^YbO89?LkK^ItQkCi$yNkL1e?Rr-_WVh=RR5a zeG9Ms)oFqoIFPztDr|fU|On=WoPLQff=^D zw6r>gPi`pG##~(7e&SB^vZCKWZcg{V-#q2wHm=C4?80wcXkKlwQ0OL7;F4H!V6G(3 zZp&)4x?GTSE}(DAEjcMj2V-ty1w~#^ONnqlQj9Ql@6}Lj)7=6Q<|6kH4|a%j~8*o5N)%}1V!~f7kOwpx2YDU-9;nt z6*lmcBd=_wEe^h$oMnB&eu=|)0!Nf76uZ71#nKStg}C7?5X!7hUA`xoHAc?WPbS|R z$xA%KU(q+XKdy&RsLF^zuGWOQkg*(}sdg#&=_i$D9%rOd9IBPW`r!>@XnN)beXPA^ z*4Dc)GhgO9J8fmo08L&T<<3IP@wKHXkg7A; zO~VFaL}SNsSAFwJ&%bG68;%pyu%^KzLX3=Up((BO_&B0S;X74<|M+f^e(<(Z>1%(Ej8<8?-E<~hbeGi&zc>jLLy z>(|JJn$frjM`lqo@t^$$(Z!ZuNmX8vH7_}EzC$U;&om9}KyZPZqR<2-IkcJ2kDx<; z1{Dq;P52rI=o9pvd+*T@3^FYI4%83?_Stp7s5&gIPyQ=5Q#iAGrHe#X8 z*AsB>!$>aMGhpn@KK>y584C_S@g0%cy(M>0*@2b<3~}BqLvU^X!e^|xI-U`^%3&Y8 zPu!DHkRPm*5G%;)`F!0m`$m44(^>?#vFz!60lbpJQ3NcNxRs6}^D>JGIr15YaAN8x zeD`{+j|F9PnJ0h7))fXXaL5MVq7n|a*pb5mg4Uc|N!Y+@0=IPP7((KIj6VPd$FDqi zs+nW{#!9gT!)VP*IXbXje6eM0iQSdDT|oMTWSEI`x08XScvT#RmGC2YAs!S1^}IJX z16y0?e7H)iHo_O``<@QtIY3%7hCmIyph4#R$&>V_cFLB>;EBG{6X&_DLF)SJPGk5` z%_w92Z?GcpY~R?R-`8)bXnn(Jwi39}F4yt9O$Az{yCqH02_2Be@US(^1mUa!Zj#9D%J{SooX$ZGO&z5Zn@%oLdcOuHWgJVTDIk)IVqhM zU(skyk;2d+9=`6n&Cik5&sVYSSx{LJmV9GJj;6G-Hbdj$I8hkFS`2!VA{a`t*T*ZA zOaw9*HWS1Nd)A?m=o2e@uK-83zD}pXIBB`)YAu-mvC<@8h+LVB1LGp6K zFB>$)BV}L0u$6y7g7D6N5Vpd?j~eFUXeg?16@ZIbuxcS~1NTr`d&NB}gNR(Bj9AseluCBl z>8}=~GuIVGGCkJ-V+@y0`1&PUTP(0^z$0V1_47~^bR)ztz%Phm+iYrn)ldP8NpICh zIVGx$=GipjxVMFzLzOWL4-vNc=|3g>(@&z6!@>@^E{}%l*UEm%UCqz81Za_SI3JuW zQoK9QsbyLa!Ttx#NsaAY5vw1kn}i}wn^q{hehO_Q=a=aK^j$A`E-z>FAbpiGFC6C2rv%7sKn zcwp?S4X`fPR`t4DT2$u2|7zXCK<(PCW6=6({c&T{BlAu!4 zuS`RwB~}@RP8Mm1->=(LxvS&+(c0o=4dnzhK5c2Z!8JeSgesdk9|}YRApz}g`N*+C z#nzYCO7wLsw?tCp5WHY9Bj?!s0W*xj0Q}XS#+7CtoTvCVPHlix^2w|j-PPXQ;v5hF zQ+|R3LfNV;rc!XEwGr@Fagc9E@*lb8pX_6ueAdqf2Fc1nW_Z$H#_gGlK$ib_*;9^~ zzeQ!cwT6Q=CdVN4;#AmZKX@-;p#T)~L&14+bs~Mhc%Icv>H^RCeEg^913hLaESs>^ zxPzN$;TVlFAb%yM_ufBkdk}MrCY@{bwM49}7)T*G6GlakwbG-boUSPGU9ix3Oa)oV zegq`<(PnSzNQ#H#q<8(t_m|WrwSevs3E&@co+B3LQr$Y`V?2TQ=;rkiE#xNka)%L( zSMTnyf@PlVYcKqu8|z-B1`TM`Luy1kv+UN?`QI~s&FOZ zZjt4s5GtQN#6w9H93xcRS^*M zc4-v8Fk5}L_f4WwJkLIT(5oB!%5BRTQ_)0g$IOo4d?fDE`I^mM`Uh2cVwN#$Pj%EtLZ&g5GxcZRi- zlu)I-MW5!0|6xm+d9)WSCDfu&K?aqAcvdq!Q$rB6`hQt?rInd!u^9-!YvVwZ^2?IS z>hf=l-#)7$!5Wat;{)k%|K9AyRbJPRG0`lgTx_*5n|_L7*DpzeQ?8=at5}Bkae(8V z?{wq?)9?hm6k}RqzrDux&5X=&Xo?5a%juF?|52A_GPL_P37$|Z&q@?lO8j22jh<>W z6}OETX|+fmcn6tM5}0i8A;*W#r0`A>PDGWsz0-myM8y>PYY40RaOy}x*@xz>?ePsH z*t)W3Iz)ULRp2f!AWGTYvJB~1Ehm9);InfNkgeEB_5iG2x9iD$+jdxk#~aGbR9N@qxm4F_yqn%Ulz&bT6Wfgu4I;SE=yBos!2X84roM^lD&Jke+%*mY@EiJ{O%y~A{qmXX~$=7FD_hOf4Lx74p zL%Ru9-PH`7?_^*+{e?N?(4Te1vFT{mxB?1g?1~+uVK4&b&`A4dc8_N5mY!sYD@(Ow zGRC@ft9t+Ay@Qmig^qlVcOYeRa~o%qC@3iyHJVL`3hVBss$Y!0ngnWR7f;C5yJ4ji z(&=yia#bfZ;ViXJQM2oZ`O{bY!QY#l*STQ+xSHF(j(978I)A`;=P&aEM5fO8r6Lro zuD|6;hq*NFNp2X?RxrpSO1uzZ=vpe3a0gZLMwHZHOx5v#uX$P%{S2Ucz<#thtOm6D zIN~rLT|s?#zT?JyB0g__yKEi?0~0uv+*Pq47erJrB9==;>cQQ-SCVWy>+o~0y-eoF zOY>t;%zXZs&pB#^tPHz^8Cuu!@qK4OyX82HDn9Gh%AGk;q-V~PBjOCfxpuWM!hI<* zM=17@ zQd|ggP{Ma{aJj8c!C|^g{aGaaQcwy@|B*64eYr&DjL%*w3tiJ%t|9?vp`_7h=vfb0 zCLNJ{b}J-9ZkM3TgR3Apaxj!wXmn>;$uO#%Ze3SLB8Sw24TQb$5u2r#(Q8VSD*kr) z38!!7sT}oLake7Bg$YV@DL~mhQm6*$$WB|&;qTjFjuZs!$$3E42wg;9Ew?5O6bb_` z=lRI)d$r~lcDi!SJ?1y?^dbitZ2`^#r)9rvR`ctg1nikbg(PQvJ-JP#w*b=gwUkwppaADc9IkC-1R|f}N)2W5II>9IEcc`2R5m>a&TqobLnL&0yC0)+J;OA& z6+~cwAQt!ES|t57AizSz|NP6ET8qW&zui;Ql06gAr)w=$W6MyWc2#+bQa`sN# zC%|u}K<2 zAM(tm0r7FCR;{j^6zCscjp0Vdc@oBJ3_&u3ga(O5Z@~C`{uZ1- zG&G)}y>{`_{rVw~=O(rDKz9e;8T2+#LM6z=2r1FSMEZp)St?C#q;MRCzo$4s)1l#1 z3CVVkB5~n_73LzM0VoZgvun9-g8)BYeEN8POhZHWO7tNYE!;M`0+$eAk4%9PAzOWq z18M7xF-uM{@Rh0ll9Qt7fA-u^I>T;2?@2PHpO(FGB>)8emZ!SfimAtSK(%|`_ew(aVR#~vcH65I zS1BhRH^9-f29HKuQZHEIh#FoqQr4tSrBjEgKT4D9N1i`otz`(}nM_%*tw5%*yk#ra zXeio%%mr^2SCUvzj4b!iv87t~zylmT4X$)W;!|{UDP@v8EYHzaYIJnub748Nmb7fs znYfg%#iS`ZovRRxZ>$#&W}iacy%R0Q_(I<2osu1nE7)ha{foaV=_z&j#b4D=r7nM4 zKV0!eG?eFWTFj>I$g5w}FH3XE$ZFZmI@ys9d*qRAV9!;wX|uPuR{4*}ho*l?-`sK{ zHm%w1y#lEHm1uFr`>w&byYkC@IHhG#?bxA&W!E zF*~|5oC~oj!FL^HijqK$+T4i!nV`DSDzoQ%h5y7RgUQwKHyHaSgEN&jjm;}flE)mKU@Z(ES(c^{hvPFd74E`5-O zq@uc+0A5EhGxS2dKFqi#B*e||P~24~2LqGNiLJdub55a-yPH{l;XTm+0z* ztr4K63Z8&@oh~1+c(vl5?Qbt;OR-)?`f$*0uw?-7U;q8ZqdMn>Cjbg?9$z0g&LN*= zk?fF*?rTz-9lHbOHqB?X$o&e#yWF{$Z@>DRzghie&E<;6)$jG%{mZ|<_+{j=*P_VP zWP~u5i_V>U(1(_jO2g^%t0|!0BNIRjuD5Xe_P(n^a}Na}lC{44psdO&binJ=357=s zK(mj#c+tdc<+JWLrAA_r1i3jpfI5_5pM{ZSzvg3RAb34Nb4>Ac`Cj~;;~K2gj9)?c zihanyxcx#Mk&1jNl#fI$syLAgU2IYhMGqI@6)_DzYs{v*+gq$d^r7+p$ptx1e>la! z!kYoq4H^q|IIeWVL#oxYqs@{D)qHM>z)#ovv4h->et!u_S zJZP^x%jVNc#Dx_ylt`yh&e>~&?7&O#&ea%E=w!50=Dy4}%mO9B%q8vUK~rUmcf+hzbloPQm|5aqMVBZ=#Ubs~m+|xkCGaaa)QZ(} zx;#Q_tU`?$*Zjo_>w3AO{LSP91_Hwl8nsN~J@B`;T+xLWXA|#oUm#HGuRmgFp$LvM z%KY|$Bw5U4eIOVeNs&6Iq^gvv`5LQD>Z(h!hOZv;;qrbWmrp7SdTguQhhXxIW>K-D_ull6jgr0m`HCjywX$14HLgF%4y)JImKQSa^k)Y!+3|QJ;@aHV1b9o^U_yuD*2cDQ1vyr#dr5wB5HSmF{$KfT8^gx=gUjhGa|(})0l+} zGd?m4K^*6$^DtD5t3knq(rKS(t20l@i2y5CWm_TC9YOJOvyE%>)woMTGW+`~;}Z`9 zF2WCMLi*bB$n6v2R?Q!px>9VcYQ0CYpiI&E^2~xYrL!_`*vaY%kxg7R8`UIP>x3T2 z{`WLTYvwIG9G1>g{2>GcG#h?R9+-U*Hb z@P!3#mbmTj4Y6FG%oYTB0nPTyRv*8ig2#6HAIy&BNfg z!YB3*0Gfuw!hu>a)s+wGYf_f5?8S?R7+j&sA_1}@!4yRo^;T3G6T|}f^nha)9k+`J zU?w8Yc%?xQ#K}_?22Z+7UrjhClrTr0kSwGc zN@5dI2k7d~uWqULtWtnxv1;m>(%L9yyjpFN>ngS=igr^oS@#-RJ;f1;)C(yL3BT%D#0WQmDF$rc3 zVRaA?#do#VfT*4y)`zoodG)T($;@su7I69D@XsR6*W3wOUNJ zT0f4*T5%kGIs|c3J4Z+CDt1>H&{eTy_H(01eAvj?ih3n|hgm6O?Hf?6j{ERr%apQZ zw9zRp3oEX>T&6c$M8fnq(+Kz1mgG2D%JMcoNZ#v>mCiSq-&ftyGi>wv=28pa{OOE# zMz?UxAwl+ePX`C`hx@y?%%)#K^OX2fvDg^9~8LeCCA+;5jtwIaPOTDR=us#VD|O zJ>_$KbR|`4y+6Z3BO-%tRecgg-h$Q^m_?V74sPN`b}^Y;{j-+9@ytw?G*1WGUMH zi+LpDf(w@L%J6WV0d>&GQsYHSK&qbBb%lA88!T*-4N&LO%Z8~B*>5ua9L-$Bl?U$( zNeN16)>r+d`gL+xfj;WEmz^d^COMHv;daM8SNbNh_!auP+gP#;g^NJOxCL3krwQcc zIVzDEtEoz<{YPTbk63GaoWt1_T@gL*-5pI`PJze%!5RLL#v5M)WPaacGT7d$ss=eP z4ZpLo)rD2#Zzn(NsMA2%-5F`YU_n29B#0At(~_@o1q&!l{W8lK%DZ!?Ib zbDOPQaoA`dl{XCFC5~!CQrXdE_i(ntGzVSYy5u56o5yU4uN~2@bjAjhl{8#c)c4cG zR3bY$?4nqWp+Re<2qfYQnz5|LGO5U%r&&$G^_2p6uI(|Oij$jBr5x{oXqZKeJFdUjTFt7Jc~(i3rJ3 zM;BDg_`M?W4*4SRfCIf#Y@fXFxXjkw=W2k&w6@jS)&)=T?dVZyv<<4>-9ggZs#MJ>MX4~8bxzwZB4|kiL%G&R<<^it zGe+vgOwNz1?WS}^c)6bz!eM309i1=koG~hXkLM%9)=pwVnxnui^s-G}vuy_;S-RE& zbhvRY&^RjKKB3fjdcGB*?=jSCpt@J&PN8i%=Emfdiq9eS0~UaAS(#(mv*qXQ@=o zRoVDB|4o!#`^k`(%nN|7uugb&vWa2+m%H%|!C9HJLH$>%NcKuXUIlS>d{eCtD4r=j zs*4`qa*|k2W?BU^Ak5zW8WokghnWca7L1Hju{Ec?wLe;A0dLQf!wmW%Jm3;U8RB%< zA&Dz8*QjWE0s{q}!&@kOeS-e%=(si0zpr|@;sf>-#gw57QNO`2^-v=b+zOYsEmyRR zo4C=+73H|Ru&r*w(#N!cmCluX>fSAnG=~z(v`WssFmiRPQY>C~=x<&B2JY!BxlP*vVJq zO=0GnBdAv_<}QOp`6<a`4yuT7tDZ9u%Y9#Lh|-q#RkN-5%k# z_B2OeTU8EZS*mTVA+vr1<<@wZS=v#G&nF;yspoRt$2mqEDFZ2CiLyo$L5B%ZU==dd2%#!0fw zt@7_>{w_bdCN?0$Sa;! z6H+8$R$!&i^D!&ADW=5So55I<9^MeCdZ*2`yv7T?gQ#oNN6)F=1SRzK^pfT3nlT;Y zooGb&i42^-0j z(qKK@u$Xw`{g()k($n z_ZkDKmrX9k)XZ2UooRiww3Pn>R*U#Goy3;qqz^a!Rk2Vjqg7hN+^p6EDVa6knc0~a zBn|66Ov7^O!fRlI+ATHz_cXx2L1%dqxy3tiD4)aaGDZaYO3e&|t><{+Sz!V-YU!Qe zeU5S(w_>EZ6i7lUP5UrKw>2N%K;k;~vEY0%#-gQkz<#^Goswos=o0*CcnGYTS_u z9b^-UkW@|Iv=vrDx%`Gc4=LY)_6BVP0QN(&cJUe>TfP5;h3m4>goQ>8b(DfVu2pRN zi9eClx09$0#g~Vn=lN}uY@EE=Oc^B)oK;?<2a2CcW1G-7Q+tVLB~f6*4>pw4JM^}C znou3)v$vqvOmWsBV5`~8ya|zEkW`1c{>Wr1^CK<2W_PG5uyg4sasBgOJo^okb8gR* zx#n?*?5-JDAXyR7B%l}XtXC#TPq}VX-uuCzki#P(??~NcPG+2AK7yWk8+BNBcyti8 z=z;ojTnKs|{d!NTVDtC1qUh!B2_W!&dBAGun!t%l9^*>zBGo2@(J!&0bnLvpp_mr0 z8$?H^m<4}iVQ$`9DBiUxQsk4ho#|0_Hpabmey(>~e#lI0LGaq^j{p3m_Y>ONgpl}G zNmQ=k%BTm2OkPjQ{`f4XK}94a^%+WGryH^d zeiiU41Nk{)}THs132ruk855jC2^)N|asKBS-vxAJ#-(9wrf01mQN z)B++T9Z$2v)doFG5C2Rz5v_d6Ni?D1LO+=RV~^WrZNwjLf#h3>Q3$_`qle_TAh|2e zM#e}U1N~JS3!f9h&NVosk-#aNdgUmS0_76YOB96s^(|22Wa|7~ExYs+jvN zSC)dJl)qpaCNs3LoN6Oj+Vjgc)1yIkDDkV5Hz*D3Jayitf~QqzVfIG&>|Jlpq`Xrx zaOSol-6p2INsdxNRcXuE`E@#DOUxaaT@)mLkWv&&4Zl$(EE4eWXp20=E4Z=7v*vYy zc@_B`ZLZp}I?2OB(!MpDtWYWk2UChGAR(T3flxv^ZS{l@SQ_i?vxJNnSS}DHvNdP0 z;ut?7hKnLizI*nWVpi-9_ewPI=1F-9VXs#jzGq+Fa502Z8Gw{%#GoDpbKk6Wnc)12+-$ zGZtUYp*B9ZFhs(*DE9``wi|(jv9scfEAy(O)oPjg(gNvDkjz&!P{aC_cjxNxHF;# z0f|=zabQYQTz;>HrS`qoMlr8Dk5sPPmnwWo6EF! z4=oOO99mdT6w6`{NM4#C>z&no4M%eT&Vg(>C*Z%>Bqox@UJ{b**mA{o!#TJ@FxAok zncSZQD=N=C@ZX}*dwfNL2wet}gFhX;aK(2)LJH9x9XjHXcp8 z0DrkhQXO6Wys3$z{5G{{^``Bc?=NnlMsI7rb;6@y8@~Hs4WSimN)~UZ*PMG1Hs?&Y zek)R^Cl*KxvPJz&EG6JL=$0omLTZ0%AY+(%Dx&RESjD5Pb1RN{r0h&muDPI5E+4#m^11rKu^ue9l&WT^~T}@ayeYBr$A;B%Z+Qel5N5&W$j_m`%7DR*{jx5YF}I z(`ARs;VdNyXA*CmW2vFRUUPn}taiYg$U;?}PAtZgfeEVv3)2;w-zG8~ zgL|-LcB6_u!Qdw=zdtSA<8vIrQ~b7%-GrTHBsBvf&fy{hM6g!=7I`QRZFa0+&wkze z=yMY{NqPk~ORFBYN^NyJPxgu;Dr0VM_uzSdLc-@T)sIMFEsgDYC*lFOj(^Mq#4?kL07jBf9#{5$S7Z8Rele9YV(gw|T*h&gv&R}};ta2?wjxb%`} zky8@yy`7ypM1um|Hutm9lB@H8<15`!ZBe!nBo4yQN3_ap7F+FQ%W6%16c)tPmGG`0 ziglXPJzz}OR&4;F*BVOip*3dwdc4^O{P0nfZ9K$q5K`viLPvlPLlJK15e>jF0Yh(M}NFI4SNUC_lw_kF)7 zSctJnDN`xuon`mv-smI#3h>V;oYxoRi35&f@JrsH8KD9fhWnE!W9umy;EI~}*N%>a zz**1PR$iwd*AHn{a(F2?L9V1j)Igumu;(MNiQt>~dU^Z;a!@{7K4U{dPrihrNjibd`kJco!^HI@?^@MT2uxBkU+k zpfPW8Df^xs7iFBqXSB(i3st&wEG3+VXjB5bMRrm&4=BR1GMrEY6O&6lieGq#1X{ce zS-FZidR`B&5q;?7Gc<85@go&ddKlvEhAxH&e`VH<=IP9?=0bB?FaHkj0blPGMU2d` zJh^$p6`hG1e4p4xX}Vt_O@CW=V1BhlS%9Kx0Aear&4_NUU~_1pSW+XYEY?Ava+82s z#OL1mHv9NScLq+h16IeCR`8gKPv$PoQsS8oMXyI;bm(i$4NomXfkYJ}hh3uo(JkK@ zrZYXDW7P`0uL%;Mtrr8WRq;G}<_r02SGlc;T@Yr(HwS@76Cmev?YtC~vR z?FC?Mym4(<*+^Y6RqNTq`-_CEn*bVRel_ceCwjEWEYx)skY5^WU3;#i1pY{#2*VVF zmie1wKJS5c33R2*p=jQvmkn|20X8nz!d}~ExD>4;P`yW;2!azR^v99)#va)Sd))fc zUD3RLGKEp2Fw=|x1OL;>OsP$=X<~5+3L8wTJED@3;#Ah<0w`RxHU8S241}>Te+(x{ zNyk;Ec|vXBQ4)kvDLw}r$_$qVZUzvFRLm`v3*p!6v_3GQZFl|g>_Jm_X~mZjo>2F? z)nf<5d7ri4WW!jV+BU%tS0X8lSC(R0J~emL@+;%aE(skI_+R%(d0ka$0@Uu`a>{N| z9K${Cs=H>a&a7=_222~UH^S_zkv67+@uyNI78nSu!(3Nj8~!{JAgmCTR^0^}Y1N9- zi&wWkn2h1n)e=-0pEB*^yX{uGj79fcI>NjD&W;k!A7r0qGiz?H1LjQ7o;U}}W>>n*NRn1Y9@cKl}mG`}A9o1hC%DxxLIF5F6=Mr=#!cH7}_@g=dV z@hu!o0SC9>bjqtEb+GYqhO?CP%TnH)SgG%PU)271w#d{%oT!cC*sw92!FY5zQk$OB zYQ@9qe$Lugr@%K=|IyrmCE*!cQpC#}&@*(>;Qpd)Z9Uu40mwcf714!y*2IG`yJn*+ zO;-z91Y01tvQ=!LGZaR5)P1Q8C>{O5X9bR$O^1Zxv+h~bDEPW@3qp!X_)q+z75vUB zYpyehC?V?QS3^4pNPIc)IJ&5}(}RnV4HvGro$GvJtiJSb=O0)~m!4KWKo!Nl6asVg zR3<0mhnVkEEwO(bn;k+#cTrw!fz@fgsdplHX5~GH>2S)FveBCrv#R4lJe=>cZ0n*z z8h&6oXEzXb@clEyCW7CshOwoO&EAQqA$7CJL&aWx#IGy-nt)SR7rWXx*HL3Ix-Pg` zB$0+8Uf>G*l3#XVr$_6jz8Eu)-n-IUAkbsszyn>6oFh4i75J<2l3_h*#}zL>(h&(g zQ8^)LSjbN|>qMY=ONH@Ll#J3WzY8hu+Pxm-hyLwx2^?lswoKb**{RotyaQ28T}EK) z-MRU5v2fg4HJD+-V(N_Yhj>uTlYeqH9ht$f^V@>;vxDrbve9oYAApJXr`rE6@1=~b zOF1ebcY02Ii1R2tE&9Yl+)!OeF2;%wPe%aB^4xz|kYe^fx})mXRXI?_(GDq+sb!R0s=;@RmnD8#lWq5CO|!Am_*GfG zzC07bf23z)`(AYW`r0{hB9oxcp%)&c7&Cp3_*tu+-c*pR-Qk#MzFMNFd>v}QPl^UM z4k+m=akgBf8ciP@)uCHEvO1l&^&S*l+z-pCUE9gxR=NKgevv`Jl*H`{K|A!sj)Om_ zAR4Dli{vVP1?R`Z>Li2OMHNHA5Rvr)5&W&V!zie~yy6D8gxwGfU6|$#3X2FSqq>D* zD%9<^8u<4%b#A2!wxy#7h#ge+A z6o=QW0jHq;Zcb)d3ZrFz0<8%FN<>k*DPd3)MkFW(iG*fveS#zYY z|MD-0JV}L1CU=^m#cEPTl7sbjzSNU9YHI2#i=H+KF0`4QjLRJ-0i|vU3V`og`2U55 z<+3PgJxSQ2a|~GU)h}1~O>p)2=7KLZzVCn3zk8&q)4D6Wtdq-hNLD#b#Vg-7`wMd+ zV5I<6EOCMpxsvoSS{CY0H*ZNUPP18Ew_Mv#z}%&l#j2sjoDyQ!v2qPNTBCoHAdVc0 zUORn%k0A&ZeM0weBeT>vC6>m~cYzqZ3Cm$os67PS%u~LkLTeroB)k#LcJP3s&(vA& zB-LTrbqzBjrTq_RiuL{|jIM62t^|WF355yIa(=EY$JxlktQyI+-D+EWbv7JZ1IwCT zkDS&;QXEXdL<0Q};uxvHIJdPD>lPkQUgrdU z$A+5{uu(-XQA&eM*8vuORX-k~p)Lk2sYdH|43(4BN{MmbnFmK9ZO$t2D-#aEKM$;7 z!Vs-K%yf2bhTN(^Z2n4nb}?kzieiu0UIr$X8<>!e~mcwbP3r5nU))G=|ejSTj`$)LadRqC6UKaNGInQ6o z9BdF~(U`?i)??LFJo2z6e5b#Op7ms@T8x`??d7Qihb;T9k!_tS!3F4Rl&j&mBcNF~ z5J0ZWk9ZoZe8YBc0B^;|G7zi#5PxngE1IVdM3awcKp9cZ;2>cFvPBB{uiTN{y%wvy z(z%)kN1oM5PHy`VB7)afbj@6pTo`HQ+|^tJT+9LRBTeoW4Qj+jR6DE$SC&z(#1DVf zexEUEo9JA@zZTek32&W=T;tWjZ-SnF9!&-{&-_4cW5mSNh(CC z41+<6V>;t@Pg8_*=+w44@bNBA*kD`jZG=UQ&<}NT_b_$(@`}4TP&sDMYgvqoxo;N~Gk7 zD^gdW!iNWKmxF6q(BVvUuq_aKVfEZS4dJ{jqc5K&JLqal6&ev0DP^yj8JDPrX4}Um zO5s^*q3Wc055UFHFuV#&><(92RpU!`tapn0Ga%PM#Sb?ow*Bwl_RU{E|BqG6@((vR z{@9h-+ri79Na&9dv_E+FkV(g|W9^1jub~-D8h7H!t+R(TZNRPHMXo{Q%i(+MWQ*)u&C$*w+N}*5K2=@Vh9(-Ln8jS$(+y*a=5~S z$IK9Dqe{x-s0sl->shMxPy%F^FV9E>pn9swP|Z$FA>~qz!j7Ri&v02@q7Q%gmRehD zsmcVx?f9779z++_d&@)luf=;B^D#O1vbi6qGf;QUS#bS&-0(0#-LMZ8%@_! z^aW6wJuDL4C`m&`jTCA6QSxOlP@1P{@vvg*+p?CAaK@i7daQ+bDx3DtohmgX{%~Sow)3%PgWa zH*;1I)WSwZ!s+?fB$^KhYFGEjDFjk)DLAk=fJ|4B{B@1=Sux#A_g@B#Q^ybKU0)Kj zqf}u%q&y9fp#?mJPizt)|73Q}L9P-2&8iJYadah2l1Wp(5WeoZ-)Mjxg@G#MmJDsC zE8-+TqB}8^T}|%3?Rr*b{n7<#%`G1e>_I=r{%vUwIAO9Ld2|6A2(^h;uAZ8soKTOH z3Rg|AyX9)^gL~gyeW#8_wd*)fGe9E#9b;3)tu_s$&itc`U^$rd*>->Nn~QS?U*T;K zAMw@9ndTF=>{BP85Lhr1UAxka9nhvu$P(stcp32@bRI>NSlio+y8|g#N8=}OjWB$M zNbX}bQ}BJl%h$(=&KR#^L1?aP{CRmg3E?cVR)EpHshQI^mZh8<4=1h;5jwkFUl(Yn z;pYp2U&v(r9RpDX+;awvjA*`6eru2*z3!NvYUU{cQcuzg1PV!c<(U}DL#6%)?K*_o zuXXlR2Qz2?-*GrMMjYf2$C) zqT#-{dPdqPRw}IAr?@*r{C0d$)mop+St9h3as{ulk3OG?2GucT@0`pF$l$Q3und?o z$5y|byl8K-@R)R)OUY-o0j+@-<8&XnY9+GAh{YJ`kH_qnWlCFtuRLQs4B%3xsWb$f zwsTDyE?8w2fG*7vjYx0+EnH2qtydZ|wfsHtonIwv20XznvqFZ~Z~gUD4inplhi}>a zX<22uxA3%aB!LZP|NW; zh^~?mtmM0LoYOTDHrdT0E!M3#kDqC~$R`8wGLDir)@Hua4Yi8jf&=%p%xaU3b>~=S zw?tEpc57k*-P5CT%{#L8#_%<6zq^@mv9Yz@N-}W{H7*vA)TCq_0p9`ZFj0fNkB!hf zGC@njdf^vuaqEu`8*?IRjf)mwaMJiCXXeQZZcqVbOTG_z=N#nAuZdKl=gNLSnW-(B zWJ?FVMe9r5Q-4q3#%H71bFQ$HCOV3ax&!LP#15PTM^rQNw@Ep^ReU6w$3j7{k;OrH zYeiEr;P>iG8bV`bZQ4n0q4UFWinX#64R;C0ZgIn>mCKzG-5nKlqsL*AR+!^kdk7o0 zMaRnTt%6;m*b%Q0r>V-M_?bP*SGs7O9qa)@^|w;wi7a-?0MHFq7r7#P;8TcncyKhU znl4o`Pu=f2So1M4_PkWwPx{dca3&qg0^qhT_fYpFU0xFNVq`p|S{$Q*>qyATS;|AE z2bBw}?Otikov2Q5^#oGXG8b^cevFzWm0MX}7?%~S+hS}5>wd9Nw#(vlY_ zj>6%_@${!tkHbUMxp9QSW;Hf?z>IhtK{4qja zO?vLY$+#Gv9Trd{AO)TpKT4ORM_$0|jw881F0KlPJFP-3*M3PV=zwh3)g`ge9v?2W zx}7!Mfh&@=P?>uzG}4;r*xpaNq{l0GOC2!suI6ct4!N}ZdK7N)3`rEycZU7o9vK9X zhd}R^kh>oG@ti0B12+9o4(KDV_yuJMsj~zx6D-ugZQyU~Wjv`7sCdA*oQ6VA(F?qr zlOa7#d_W~PYZmjDgX_$ZDiv>)hlCL|Ncw{Tavns~N{JEN{Ts_Gn|GI#bJ&b8G5pdv zW6LE%i7L*iWfXJ5&Y;;ywo-4L%y%_|Y)zBaDO&Gy0RtNkBDYLQE(w*8uJu$9bfJ-d z2DAhfL_6vUY)q7#_ZA+iur!gQq8D(A(_MVE#q57apUsbzF2tOoTBvVBzX-gTvcCfS zwNfA7Ow9WEF!!AFyi#+_nQb{QP)f3#N1X8$pv{Byb|zngxS`CF6O*(Rj!ZBQCctSI z$HRskw2Z_zdF8>gT+x|I`{~Q}v(p(UpIMwt5^4^lXU9Z)un&ome)Jc&!A0&EI z*HrZzCNllgN*A|G_55VMk!3^Jng8CYC_%?k?2@@H4@d}ASwbX``r;={73R7Z$8`Bq`{Gu?Q~hbS4Ue#r26by1<3ggd#}GBxIN9 zOC`E*u27)w=hDw1yvmkMSAlc1k54ZM*#Ka)TE3DI5SHGWA0_BhsoUzhkqzx%pj3S; zE`k~yTR;ubApu2m-a7=RQia%zox|hJWqwAc%W1o4L?=dAz2jwUymRLBlKy~wQ8$=Yax86p3%riVzFOC9)HtGbhlbpl zem24q-Yi``vr^I1F1NM3qVf_r`}V#Q==?Ov3NXcBlEY5(v>D_ppHx(o3&HgAh5l7F z>NdRNXZ0DH5FyTE&V5h|=TS;zk{6Q>MkrXPgX-$(DMVxfdCY_6nHXTi*U&C6s%dM+ zSsyFyFrGyeHvt{JSXSz3K0=41;YM&;I}qc(X@z*3h95+zw z1Po31*!-X=%}gW^7qR~twpddN#wYZ6!4C0X%)#H#gkHU=v~SRbz?pt;VmY>II*ijP zvLj;Sb!c|pZwFSyXr0-CPJgk_!8(wxO%^0{87!HLpRY$2UBW*!~LbzPVt0)F`E&(@V)fd&zR@v z=8~f2x4e|Xv;e$GM9oi_sjUC5H0FQ$1={86mOPrjkSqU`7Lt4?d)kE?I2OX}%uTJ4 zNuJl2cxtB?x1g%8@Ca(*d5Y<;7nSXZFioBeVv548mBvic({7wz+U-`q(o}7x z6P3p*)EQdp>7l;n^Icl1A|{Z4t33M#To9TySfF+Spup2#g9U@JH?;*QQVnf->+6Ro z>CI?oAQ&@pN^Lz2cHt~C&#$~bm#*gi4sfn1f&}XLJaeUNanXk>`fIytmR3_)byRUz zp0fa+r=H;eM}v9~hbRZsO7P3%y8TmFAYExp_cC z7B(*%ywkkBq-L&am!upN|bggSFNS)Iy0Bq27nK9_Stb5G{^r`R-OHAAYca?~T+LLE{ zAgL4C6Mx2+g{Xdt<0@qdbGVHZI0$_+0|fPxdWEVHveATLjQMrS-S8f$pcCkZ*uIsh5AJ6Qp$r$Lm- z)~<3(X^pv>B(Zghg4ZNPa%spocz%5@;A3E-wR z3Yucb*ksrt^-;$sTicK!gH$Gnf#GbI06E)n;mckAnRUAIQ4G zMl2r!aVDaU^~Q*a$nlH0>#}KgFjikja6=ON+Y4-~8q1IvEx49AmWt{!D5(S3Tnbuh z$SyqkWk*r(Z@kV3bN~UcIH-;H4$&}P zG)7n1b=lJfAdm+<^g!|`eB$l%rQ|P{#farsMu~m41j%{ z*`aMtKr(NYb7ILaDNm>hpj@KR$H#)Zb!^_!_GE{GO2w2r#=;wemkNZub)4~z{Zi95 zjINCwqn{IaB&6?IFmacb)8AT%&i!5-A>3rOab<8lLR^Gax+ohH)Vgh)LDh!BJ^Hi6 zxN7yKWj*5Bsv7dj7&9AVV~OY@9GX=mLy0iOGkRh`#_qL zC;m9%T1$milX$?61Ey_5F{2DehAy2wsI$zkd7FFZI&qr zg~N{uldRS^?rfF@IjXZMHmOhN8gDea%cb7(a90Btnqw=v^dx#Yxk`yNgbmKsUw%?z zUUdC?T-~Zfdz40*Bm}me5YP%mrrK1D$4k(H9X?4}>Mkd40}8Bl{H-G&hbOSa>2M&* zKd?g|M@{YHn^u?P7mu2p+EGMChO1HGRu#l8U8{>fehn|ZPds5wJW`gG{EqfYV_?QI zEE;D@HQaaDyS%Q#afEzH;C9*~AfNhb+X%2*FHoJbCid8&&r*IlE(TNE-kSR#{rp%n zOi2qmu*&Muh1^?X?+UXNP<|H1cfe+M_fjQmcc3$;1mBcGUxS;B%V8Kxe=z@soaTx+ zf({rS;=(cmG)6@+xW|CKA-}=4q8XhFmA$P>q7W?lFzAx ziFqZ1h!VHU0DH?Wt0* z8ldH6FFv+&`T<%Kmdy8M(5NdNGYjUbTUXMBNG0wEkssnztQQmnB{I%DR~Kg3QZejy zF~j+Hn0!})Zs)r=KNfIrgKzm2=6+cb)-bMk*W>zK!hx0+5!CqA;k6|>Aq0kVoBFMl zdUv>yubya6i*NSjV6F)fvP>Y{U$rx!4Y9^ULTSD=#A!~C(_0EhUuLu#%*`jkfo6dJ zdUV!K`@|pxx}W$t%|tg2Z8|HgMvSYkir~}bXt?nKBAj@P9jZ4v6F9Tji9phrd#xug zfCa)grA_<7CncoiZ3`GdHjrnx8bBoGkrPT!;;<-|vy))l0hNN6Y`=`x2P4n`mH1bF z4OP&zoD-`>s*=UtZ%E;R>gd+P!EG3q6)a-EK!Au;B+N&r0uOw8a0sl?eoTFe%kxHu zPR$)i2IG8AWggvKH9a^Cf#T*Eg#rQ->_4GW2H z>e=+24>SlRq`EhTs3|vXwySOeoUQ?^W8HF)T3B7Ed~L9}WYt6sAb$kM$;vHkzr_Wp z@+n19)uVOqTnZlkDPZ56g0tz_F1tW*Jdx5y?!BN#3N_So&P5^ObioWLx4?>YcJgtS z3gxR}Z59Z0NhsTr77 z8nD0#@w$*{x+JRHY|13Pi>NHc-kOGYxd;f3t_C^&$Y?67?~1+I{9CKE&-B<>FL!`N zAun{9ylS@$_BoZB*NL-}DW8;|{p7Aa4vzpTTLS{(Xby*)^;{0z-=z&QXTXhd`NL}z z11!T-ll!R|3`eKxn@|2R?_`8gtP*_3pOlDgt{ z=id>LXQ43W*XZu3+}PppCPp_LgL=J$ejhV%1RI5txVGs}A?d>+af1~D<^pFi6}BZM z7bPeQs+E&ta^e9UX7sX7s*lZLj}e1a9jYEZf$N~ zmg!#OB-nX(#AXO-qRh=ch6~&e}HI$gF(S zROzyDv%2=VR@W8Sn9~0ZyUwI6w@7l5QEeb$*pvq$D_za2kBt@lCyWpWTa}>IiJ7V7 zFO15hu%!rPp|zae#ndfM`Zce}H{4T4;IXj|8;Cq3bk!_1A{zfq-#%lrGWaG|CFjX9 zKah>azAA}#T1^5c+GCT2VZ7Pm^BIc7y5-gy>TMjug+>Y2DfFgX;>)7aG5^gCC*!9Y zjzCTArhUGWG@53Ab=YabPy#;KW-03ime2`=>H;WvDXOd^IpCoYIAVuY=-`^8vbS^t zKVtip*(J)7Pw0-4R&aPsE0|$T9qCA3n`7j)U9wx$ejXyJHPECnY zHgAUc>dw|>_q$vV^O8Qm^XqTBY1v$ganvgLFmx;bQQ2;t?*2)}>!B{%&l%m~t-=wx zuZi!#5b?%Werj5vM-fz5TY*5USXo(TT5uQ#6pPRYQN|!O{ur)k2UuZmz)HA0{v{v; z=ps8QDyWr6ba+dl7-8^Wd2gCA3}I)^G4U5n0Qy75_BEb{rjql6FW)@8<=UtWg#CiA zR|1Ftwj9GV>`yp-$G`#SG~RvlGe9zhnWccAnqx9b?Q~9gz<{ zCxmfb`LTo-xn@(m;=kO)QErE6iEu4wIxph6qoA(Pbv+6;5pp!Z#WlMjm5&nYS{*nN zy@fyR?4V230OIPf)Pz*|urAipV6ir&4zuOg_cxb>+`%ocZ?3_`U2)%`ikTbLa8Dkjv4R@K7RM5lfuDBA62tRkXtT7vztkcKVH35hWYL7w0Hg$^{#(vpD(zT!Jau-@Q9VE_D+6Ef7x)b$PK1q@dodvURfw*F;Sq_@&UEyHnc?PY)Jz zRZNuqAclSPeUJ|Y$@|lmy7BQacO*BieFcd-Thr0oAhhl-l};5tsOXWA7_@f|j5`oO z8fRH}0%iUF(S-w!EK#WVOlY!?lBtWzBU+2^EQ8F=yYXaR=XrDLxmPBy)HY0@vRI_| zoxls)szbC1hII_qtwjjdz9N`1K=LKAii<;_C`V94jd7S{McOLz9BOSU5Ui}ms82#J z4oix5)bx-IMlDYaV>fX$CydnBv=d>lDx@rtnrH9IO}d42s?Bi)*fo0eNxHE)-Bf5v z?L2IGi*L|H#D#LOf0~5wT4GMG#)VbgP2HoYmEzPcGHW;a>+-p?_kKl=r+E?C?~d6z zqu_5IAc`X<1%KB;rz;?mm~~5BKOP zqFv@0r~cCFgAT)@cdN0ct(D!Ue)R1`TE5lV?~Etl>NxbRqIE{6U{fY|G#I+&#t z6rz_E=WMJ&NU9@8)~ao)eb#kHd;`{Go0vr4x;Ts&KAhBACX#dP9PzFu^t@_)vptu1 z=$`b<+vt8a-l+%eeO+NHvF zIoASN9ave)Xkxo8bz-|Z4i*0L;3mL_Whf+rqpFC*Ni((PPnD4%6oCJ`2rHk8HPJD>T4n! zJIkl37R7aT>~}Qdxxgu}%CBN{WVuMQJ9$(k34BfPR;F&N$TJd2bESEA7YSR<5(QDI z6OnJLd1)cu9`ZXsHyeevY0j{M5s9ej&E+DmBu=zwIx1*h)Es9#pW{oIQ2ULYP}@NF z*zzqO;l>Ijgixfnl;f}qly3NT@xu?$yA-(uB67gT433qy$2`?NNToxkzA)(uWH<5} zfTGewih~kD$pvQm{3KXZ4cXxUWgP?SyHQLIn|l6^hKbPS6^VSgB|nHqP!1{_!hOV| z$am*&66B0gBaV@oFNxCcLcbSiL|z5aQcett@b6S}DM$5-7C&UcSC;oNFF_c%%C0m& zy%&?}HQ!E}#@Hm(-12lqpGU7h0^}0JupJ352D23Q`Hb1i#7XHdC=JgecaM<8yD*W7 z7DQ;!2(^%+O;r+_EQX>AC(v7k-)kZFGhg@jsj=mVk`XJVKb4KO{SKaCxei9a(Jx#I zo-qV4FAU0&IKhFQ)cZ@Kr110>B|4q1?>#^Ox>S9Vp)LysVylu!iK7ytFFtuuDEIR4 zwnm|DF;7FyA3+#S`;wEtgM8Vyr>lS$mIcY+8R=OjNS=6hl&l%^qiB2dp<5Pazrj_H1&kowciVacW089(3OD88rz|Nr zu*9k$6AwoxQS_k7q&1Y8a#}0uk}^GvpcuY2%1)=Z9{-g^V9}D445ZGy2)B6a#G~=d zl<{_#7o=)^gFyp|uUnOh(<^i-tB(R`#3F2bzyt`7Lh!Dh*s%9Fs{x-SVG0$>$N)+Q zVKgVMt&$xwaNU>F5#(+p^?T|g`9l;vjaBhc(h{pY9jo1_h=~(bS*kX1JeFKf22hjL zi{+Mzi5MB?C{K~IXU|x1Q0UzaSsts`tl5w481wLK{Lr?r03S=+JawX?xgQsl#8y*c zI5xq2FCMF(-khQ{L)VjZu3`1A)WjH8j z&gyI7&OEak1rsuQijSJQTFCQoChV)>Xav2$JPeO?`!JeK3|tE9b+V{_Ar$#cJ`IPU z8vuc#DS8#&S^k1LprFQP_GTD+moZpCQRlwGbQX&+SiOX^$NGh$FH=65BU64+8u z_PI2z@k5@_U30A_dZ6X;Q#}NVBv_;=LUvckHqC2}>QUE3cg($ed}I=H&52=`zz0*t z%Ug6jTs<($hK-Akzs`&S0p;rYV)IM<*rkwGV#H}ci)Df}FD;UD$OE`wmrfF()`>T> zHtUVb@ixTDX?SHw_b;N8u0$U$^YOF8Kusvmvlzh!sS9JO{Trk1UP&`&LZH(UH3?|a zQgzOK@kKQ;O9YcH(2_I4+!m8P;D1YYZ|^Lc>tvD^4_lwi5hu!uPxBqp>j;6^{Nm_h z@|n(Apz=kD=XUjpObib!ot#$|M{#{SxQQ4=Z_D@d+ND`|)&$r50``t5Gf7%7zZK1Q zTykDIAc7Ko2C!6eu;=;YHw=t1Ohttcxn$_wvvB%?R!ybw*QvSLwW*nYFw556$YJ;T zcIORwjA6kccpYzV#F3QWk!upzv~TDUFE6K73*m{Oiht>?LA=&{MjjT7hW@-jk=iS3 zQjn9>JLWko^h-J$35wFi4VR&px%T*Jpf1w5z);+uPSmg=qBV3D$z$7Y>u1>tCZ}3q z-E=88tQ_zLI(sl*GKfxv@TFK`r(l=j5wiqb#uJ7T2#wbs!!~Mr?7^akUSFgO8ZwsI zT_I}DxHNIhDX3&i$*_i8VN5E>fT=6U?^R!muWHGCP-Fpc4=_Eo?!{1?nt(5fS@!dQ z8fJ6bL*mRH+3s6sg?2XNrY>*`P^hwYD!QrS@u8ZzW=@N$*echI^V9e5zPHu?i%8Zm zMt(SvmC)<#`}?_wh!u^t@7>UCpXQaEBNR*+5LR>U-$n~>uZ`tmlh}|tsVM26igrLQ zZIsYf5_CV^oqP%7*YUa*Yj9~ZjIkH?)p06rtc&AcAOW%ZGRNq8j5=KIPwM4x7I-gC zAU~waoJ)D|d}qq9=Yi{@#YaCaKV|a2SP3=6t}PHQcmmFi;oQ?W_|3!_9x*@x^3tW4 zajwBF?v5s20c1ctT#07smqt6b2TEuI=tnob7u?wpt(OG#@iezG_f-zZ0Nou^Tf_|y zvs2ijA?%(&bGa#acpy?LW1)guBW}snwjm#O5IJM z;L;7}l1f|Bf6x3TY!_!*ejOz4cXtqW$$;?|&?*fBiU|v~GU>Yu z>I6_eARY=7`eJ4dl>yk%8!bO7ejk)aOzzkp+z~!w5%%FM44&zabheSl=2zSMgC_G= zU;)VQ`mBOyX=KjT8ff@t1L5L$;+?}<65?@`-fxJDFx-8Mzrz=HnNIj6u?jcqTeHR- zRTHRge!iz{bPPD~UPA}FRVeLwS0JDoUIt9meX?L3SvngsqbZ1w*^qO57&J#2wW*2Z zb&~DPurn8%)7l?+LZO-$h^LsP5~SW)yNSAFB463I>^z&L^2RC-XT*@>G@d?=)9@qs z=>iwMma7+XgI}fd)919`UkMvNMh$k4JeSr(5Lp)A>y6a6Yz-!9@6bk$oM2UFns$Nq zIS-0KjDE|acz-G0+tXC(tl8u2v7csVA|KDgx<-8GqwcA*a6cup*O-kIL*;z>k9e&V zLdZKYJFhRTa(W31;m?X0#;X9<()ELM%fXSpPCE0|?UK5xibdT8H#d7XX!VQY@DaGI zzTj_)dGq^(T|CVFn*zl1;(;!O*CsF)3|@YFC6pDuKcQ-ICfS<5rfy+0VRxuwuU6yt zzN~M7#YTd1rTo|Wz$;bz?T8v+aQwZu<}Dxwh$OcKjdp*cg)7=2v<}vps;4q|$8Ho} zH|8ZG{o%l~71L7TuxRpC5>eQ@mZ1&_R#c$6XbK?9V>nix1VQ9w%aS->%Od=SeJ)#? z28_b#XX`rs_xz@K^&3{m+<`a9O5*Ne^JV0N5!y9&+{$i|32RQ(vN${X<4cW~sW zeyj9&%b1md!)5KAw%LkaZtpY!5Dm8)3SQ}T>P6>`I1hb?hAC?fx>>Y*)7!yNLC)9_dy-Kqo zQK5%xZESWT?;Tz9w-tO7Y~1_hUr>QQM}P8R8HT; zT%IH=>c?jAm@Al@f8U7iY~I+kyFa*lz^X;PKl^R&7m6Hsc2!bDaTe;Yz*g1A@r&4p ztzp7?eE_@jhH`*tgsY1)BT=!^F)l%eUGkyIz$`kc*%hvILRe4db>E!&-cP8#Vyx_p zw2oa)*j4(K&r7=S*}gNY_4>P;cIM}33d$v1J|Y+D8tIY$Hfsf5rDp3lE8iWXiWA2` z?s3JEm@4GMrUjl@x~f7b0n9|`^36B`I&G@0Q~I4HU^M z!>xr1kD0D_^{9wa-ForfI~(V8_vB;?ICK>oZ|BnK#Qg*F84w|pJ$_Zav{jdAsa1jn zIW+uQ-(5{Htvj(qSKp6Xm&+*D!gwK)hBQ%26J-^)sqBe9VRmTm!Y&YWr&^saot=NX zgLYlRAS=aDZj063`PZ?wlxtM7qelWCP2Kcc$ce%AVkBZzQiT!_~&O(JMn;r z>v97iNcW4AXP~!@vCy;wRFc7V?M`@5=Wn+o{23N@UB&&Qw^DAQd5e}B=;RQW)`}WO z`#E!TNj@f6fpX2FmoY>$t3dr&xi+0%p3HrSXG?8L$&k^89_;UFs$<8h-g!MXjS&gyqq zEf}2h4*>2%0s?h&fhPqyp%`y05Ujb8AVcwj8Tmkdow zCc<@Z$EWZ4{_w8!ZVe=eh)emx($Xow=R|rA5q3elOa|KOS-LBE-{tfIFxQiPBCGIr zd>@uVOS}y|RT;FPjePir!}ox|azr#s5#1|h$$~F}9_S+Ic&hEzr$z|9UMfw<&fgQpU1+9;CbzlKD}V zUXKi6o1Y`l0T+640iF;~;z1qk6uI$W^ioQ1jpI`RLA6zkSlKC6D2uZggBpYibU)ep z83{$PA7@%?nCBun2s#Xrbe?SN`&J=r;9Q}|9Df-;o0Ke3EbeFRt+LP^%QOg9kfr_c zn$gi5$-KJ*tkk+!V#qDqu>iu19Y+i!vMCaeZF_1@^8r=Q6eTB!_lUm>`S_{bq$J2@ zmYP%PboI@5lV$F(x)i}b_w3&I%RQ*sYnLv*&U#=BTAG=6+WC0^-& z5C)iLQ*S6c+l@?lKT-68xAnJ5lQMH8ffW@R`PT$_L)kq{;=z#9iWJ=M3I)YjutQaS z0;^Ht-CVBum1{x(b{^QH%bQ_LldVAS_e<-e4Py`tzgRNaA5n$Q6#{N;{#?P{?LGeP zF@fskn&aM50lfhYO?hR_0O4Oh`<({#>zmiHMwnQ=g2}fKwlGbYlN`me@}+Ibw-WEb z@|Ndq{#-LX3uu>`dBOv92>g*JYp2FF#Vhhnjc{T((#cX!n-Xa!r)wJmVd% z@-z%N^v7(Y>^;Txx>XF@G|IJ#a(JT(LRAi@d%Rz>%379iSmr$SgO_Z-_99GB&*UoP zqAkKpkx95PrNhC*h;s4=MiBiK;l!0c=+gAUsR?-0AIssZ!huoTcAA1Zl5|AR2 zW7Q5YW=+l#<3M>6OqXaYZ}Z*6&2p0x(U2Ll*N`)ETlG-2#2p9hy%HMgImDCLj@0?` zmd$6`M*~U-_1Ef8J96zK!m27bPlBSt)Oos-u`n#8l7!|qw+eJPs|u6<0IGfVDh0JU z_upSof?9vy+W^^!i2ir)2<>6)Vhg@-&i5b5QruOMQ9ZKACHrSWdC; znNt(3o^jNztqw%>qQo#ywR^^RQIWCTOMrpKEElPB#%TKKJC`Jh5iNP^W-Z+t>xk8(K!d;lC%rvs$5O3W|SU>LiVpt^1XXG@SF%GI1~_}YkhXFkgZWc7SJoX! z#5>R=laAm`_oz12I(|Qvr~Q_~AHL5Vy^lo#J|_}zxvTa*_A`V^Kc1O6QCX=EqvNRe z7VWm^DgDO%`r975i&gz_=3#=U2J7Q;l|VtJE&2q4Mz^9zq7@%Vu9J^Y>9IHc@=Y_` zTdR=DW@1m2%tBXA#S)8MCR&v=u-s>3OHbJ@2#BRRXk>c^wk#y`O` z6Q0_sY(uQMm!x2i=u<+xCAy2Y9Eue^%91aM-IB{wJ6~t+WW1V1G*LuJGFZQ1`4KB{ zTCf~IPQnIR@v2>-=D+-cd4{lOAJ6ZrY0Zy(^2O{axVgpg?0}{8rMo$~fv#pphomZ)+FgN37)IJpj7dMZQF0Q=}O z3{Qq>RCtnBH*1TV&Je}Up&EMB2fV2L`r(HkFk5^!ia8u!bv*DuVJeb{4$&AJ?#Lg* zoJtTa9l@^Drtt(1xTd$0V8_0=YnF@f5wGjP>?3p$He_$>5=qxnm`pXdm4Rj;eV%O~ zHVPUsvA!4mmCfU4!xILJT)`i3kKPM%@~q|iAXMj!(r}&gGZw~)8EqV8K-?K|;3G@Y zIg)Qp^V=$+TuXl52kO6&0(i*Tf|mQ5$|~}{i7mOV1a1>wiuvvi6Tb1qjK(j+`w2gy zbF@sJBaLl(G(+$;hsd7jdHTR+&S~SUi;m!nvO@VNAEeavnu4)RhSFE#Z!FOHjuJ$2 za&rNAg2S(}X@4vbtCGVGRg}cnOLIFHPo~z`i5cmRh{Tg*TMB^~qTXp04e!D|_45bn zNIjCoZ5KPJfr%M`rz@}mQ${8BCV70AvrE99kURMU_yZ+RmE%#?W^-jLY=fY9?jN|9 zrU>Z0#wi9DsfEAtmi({)Mb~zgic;}eUGD6wB4&%ONFyncauJk(&I!T(DBKlUN_IXk z2Lz}m9;x0_sx+nQ?~#0j%OtIFt;Z_CXKHY8x(UN30uQRham}{Kf-q(Aa~h;t`PN~{w4H$ED@q9edWFJzN96tjb@GR4rtS|n$EkT>z=+c78gM1MfS6gH zs42j)>_}tv6L=QQ@l|XX?1Ifh<`J_DWu)6p)#mn!a62a5>Po5<>k{qc7fmGcov>c- zuUh51D`^(e%>y!~>M6>KwVLc^1*kCCNYlY=g^zWW5ALLAs3VLLNWH!Q??e>;TU8GGGRO%h*ZGD|=D- zl4!yMCf^n!FaeiC3Eda7rrz`}x0mpSdM8iG)LvS|mQtbo7!B*IpavErP2*%b9E;U0 z_RSSvqXMq?K$&MSxmsYw<&gES|G$5J0_e#9wvY4u`4Rtq^hz7XSbN diff --git a/demo/webcam.py b/demo/webcam.py index d84dd6c664..6a7863037f 100644 --- a/demo/webcam.py +++ b/demo/webcam.py @@ -1,7 +1,11 @@ import gradio as gr -import numpy as np + def snap(image): return image -gr.Interface(snap, gr.inputs.Image(shape=(100,100), image_mode="L", source="webcam"), "image").launch() + +io = gr.Interface(snap, gr.inputs.Image(shape=(100,100), image_mode="L", source="webcam"), "image") + +io.test_launch() +io.launch() diff --git a/demo/zip_to_json.py b/demo/zip_to_json.py index a4bb665742..6fe71e17eb 100644 --- a/demo/zip_to_json.py +++ b/demo/zip_to_json.py @@ -1,6 +1,7 @@ import gradio as gr from zipfile import ZipFile + def zip_to_json(file_obj): files = [] with ZipFile(file_obj.name) as zfile: @@ -12,4 +13,8 @@ def zip_to_json(file_obj): }) return files -gr.Interface(zip_to_json, "file", "json").launch() + +io = gr.Interface(zip_to_json, "file", "json") + +io.test_launch() +io.launch() diff --git a/demo/zip_two_files.py b/demo/zip_two_files.py index 49c5402164..a33e2d5a8b 100644 --- a/demo/zip_two_files.py +++ b/demo/zip_two_files.py @@ -1,10 +1,15 @@ import gradio as gr from zipfile import ZipFile + def zip_two_files(file1, file2): with ZipFile('tmp.zip', 'w') as zipObj: zipObj.write(file1.name, "file1") zipObj.write(file2.name, "file2") return "tmp.zip" -gr.Interface(zip_two_files, ["file", "file"], "file").launch() \ No newline at end of file + +io = gr.Interface(zip_two_files, ["file", "file"], "file") + +io.test_launch() +io.launch() diff --git a/gradio/inputs.py b/gradio/inputs.py index 7e017eb446..fffe848908 100644 --- a/gradio/inputs.py +++ b/gradio/inputs.py @@ -20,12 +20,14 @@ import pandas as pd import math import tempfile + class InputComponent(Component): """ Input Component. All input components subclass this. """ pass + class Textbox(InputComponent): """ Component creates a textbox for user to enter input. Provides a string (or number is `type` is "float") as an argument to the wrapped function. @@ -50,10 +52,13 @@ class Textbox(InputComponent): self.type = "number" else: self.type = type - self.test_input = { - "str": "the quick brown fox jumped over the lazy dog", - "number": 786.92, - }[type] + if default is None: + self.test_input = { + "str": "the quick brown fox jumped over the lazy dog", + "number": 786.92, + }[type] + else: + self.test_input = default super().__init__(label) def get_template_context(self): @@ -159,7 +164,7 @@ class CheckboxGroup(InputComponent): ''' self.choices = choices self.type = type - self.test_input = self.preprocess(self.choices) + self.test_input = self.choices super().__init__(label) def get_template_context(self): @@ -192,7 +197,7 @@ class Radio(InputComponent): ''' self.choices = choices self.type = type - self.test_input = self.preprocess(self.choices) + self.test_input = self.choices[0] super().__init__(label) def get_template_context(self): @@ -225,7 +230,7 @@ class Dropdown(InputComponent): ''' self.choices = choices self.type = type - self.test_input = self.preprocess(self.choices) + self.test_input = self.choices[0] super().__init__(label) def get_template_context(self): @@ -266,9 +271,7 @@ class Image(InputComponent): self.tool = tool self.type = type self.invert_colors = invert_colors - - base64_image = "data:image/gif;base64,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" - self.test_input = self.preprocess(base64_image) + self.test_input = "data:image/gif;base64,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" super().__init__(label) @classmethod @@ -340,8 +343,7 @@ class Audio(InputComponent): """ self.source = source self.type = type - base64_audio = "data:audio/ogg;base64,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" - self.test_input = self.preprocess(base64_audio) + self.test_input = "data:audio/ogg;base64,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" super().__init__(label) def get_template_context(self): @@ -383,6 +385,7 @@ class File(InputComponent): label (str): component name in interface. ''' self.type = type + self.test_input = None super().__init__(label) @classmethod @@ -424,6 +427,7 @@ class Dataframe(InputComponent): sample_values = {"str": "abc", "number": 786, "bool": True, "date": "02/08/1993"} column_dtypes = [datatype]*self.col_count if isinstance(datatype, str) else datatype self.test_input = [[sample_values[c] for c in column_dtypes] for _ in range(row_count)] + super().__init__(label) def get_template_context(self): diff --git a/gradio/interface.py b/gradio/interface.py index 8d6f783be9..f08aee6489 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -204,9 +204,8 @@ class Interface: duration: a list of time deltas measuring inference time for each prediction fn. """ - processed_input = [input_interface.preprocess( - raw_input[i]) for i, input_interface in - enumerate(self.input_interfaces)] + processed_input = [input_interface.preprocess(raw_input[i]) + for i, input_interface in enumerate(self.input_interfaces)] predictions = [] durations = [] for predict_fn in self.predict: @@ -260,15 +259,16 @@ class Interface: raw_input = [] for input_interface in self.input_interfaces: - if input_interface.test_input is None: + if input_interface.test_input is None: # If no test input is defined for that input interface + print("SKIPPED") break - else: + else: # If a test input is defined for each interface object raw_input.append(input_interface.test_input) else: self.process(raw_input) print("PASSED") + continue - print("SKIPPED") def launch(self, inline=None, inbrowser=None, share=False, debug=False): """ From 37cefe9361c437c6c45a5ef657ee2506f6fe84fd Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Fri, 28 Aug 2020 11:01:28 -0500 Subject: [PATCH 05/14] ready to push --- gradio/interface.py | 1 - 1 file changed, 1 deletion(-) diff --git a/gradio/interface.py b/gradio/interface.py index f08aee6489..cc7b842933 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -269,7 +269,6 @@ class Interface: print("PASSED") continue - def launch(self, inline=None, inbrowser=None, share=False, debug=False): """ Parameters From 724bd1c6648fe3b2add51a4dfd6dfd9f161c4c1a Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Sun, 30 Aug 2020 16:15:42 -0500 Subject: [PATCH 06/14] test data fixed --- gradio/inputs.py | 6 +++--- gradio/test_data.py | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 gradio/test_data.py diff --git a/gradio/inputs.py b/gradio/inputs.py index fffe848908..76f0e921cb 100644 --- a/gradio/inputs.py +++ b/gradio/inputs.py @@ -15,7 +15,7 @@ import base64 import numpy as np import PIL import scipy.io.wavfile -from gradio import processing_utils +from gradio import processing_utils, test_data import pandas as pd import math import tempfile @@ -271,7 +271,7 @@ class Image(InputComponent): self.tool = tool self.type = type self.invert_colors = invert_colors - self.test_input = "data:image/gif;base64,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" + self.test_input = test_data.BASE64_IMAGE super().__init__(label) @classmethod @@ -343,7 +343,7 @@ class Audio(InputComponent): """ self.source = source self.type = type - self.test_input = "data:audio/ogg;base64,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" + self.test_input = test_data.BASE64_AUDIO super().__init__(label) def get_template_context(self): diff --git a/gradio/test_data.py b/gradio/test_data.py new file mode 100644 index 0000000000..e157d43790 --- /dev/null +++ b/gradio/test_data.py @@ -0,0 +1,2 @@ +BASE64_IMAGE = "data:image/gif;base64,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" +BASE64_AUDIO = "data:audio/ogg;base64,T2dnUwACAAAAAAAAAADSeWyXAAAAAHTSMw8BHgF2b3JiaXMAAAAAAkSsAAD/////APQBAP////+4AU9nZ1MAAAAAAAAAAAAA0nlslwEAAACM6FVoEkD/////////////////////PAN2b3JiaXMNAAAATGF2ZjU2LjIzLjEwNgEAAAAfAAAAZW5jb2Rlcj1MYXZjNTYuMjYuMTAwIGxpYnZvcmJpcwEFdm9yYmlzKUJDVgEACAAAgCJMGMSA0JBVAAAQAACgrDeWe8i99957gahHFHuIvffee+OsR9B6iLn33nvuvacae8u9995zIDRkFQAABACAKQiacuBC6r33HhnmEVEaKse99x4ZhYkwlBmFPZXaWushk9xC6j3nHggNWQUAAAIAQAghhBRSSCGFFFJIIYUUUkgppZhiiimmmGLKKaccc8wxxyCDDjropJNQQgkppFBKKqmklFJKLdZac+69B91z70H4IIQQQgghhBBCCCGEEEIIQkNWAQAgAAAEQgghZBBCCCGEFFJIIaaYYsopp4DQkFUAACAAgAAAAABJkRTLsRzN0RzN8RzPESVREiXRMi3TUjVTMz1VVEXVVFVXVV1dd23Vdm3Vlm3XVm3Vdm3VVm1Ztm3btm3btm3btm3btm3btm0gNGQVACABAKAjOZIjKZIiKZLjOJIEhIasAgBkAAAEAKAoiuM4juRIjiVpkmZ5lmeJmqiZmuipngqEhqwCAAABAAQAAAAAAOB4iud4jmd5kud4jmd5mqdpmqZpmqZpmqZpmqZpmqZpmqZpmqZpmqZpmqZpmqZpmqZpmqZpmqZpmqZpQGjIKgBAAgBAx3Ecx3Ecx3EcR3IkBwgNWQUAyAAACABAUiTHcixHczTHczxHdETHdEzJlFTJtVwLCA1ZBQAAAgAIAAAAAABAEyxFUzzHkzzPEzXP0zTNE01RNE3TNE3TNE3TNE3TNE3TNE3TNE3TNE3TNE3TNE3TNE3TNE3TNE1TFIHQkFUAAAQAACGdZpZqgAgzkGEgNGQVAIAAAAAYoQhDDAgNWQUAAAQAAIih5CCa0JrzzTkOmuWgqRSb08GJVJsnuamYm3POOeecbM4Z45xzzinKmcWgmdCac85JDJqloJnQmnPOeRKbB62p0ppzzhnnnA7GGWGcc85p0poHqdlYm3POWdCa5qi5FJtzzomUmye1uVSbc84555xzzjnnnHPOqV6czsE54Zxzzonam2u5CV2cc875ZJzuzQnhnHPOOeecc84555xzzglCQ1YBAEAAAARh2BjGnYIgfY4GYhQhpiGTHnSPDpOgMcgppB6NjkZKqYNQUhknpXSC0JBVAAAgAACEEFJIIYUUUkghhRRSSCGGGGKIIaeccgoqqKSSiirKKLPMMssss8wyy6zDzjrrsMMQQwwxtNJKLDXVVmONteaec645SGultdZaK6WUUkoppSA0ZBUAAAIAQCBkkEEGGYUUUkghhphyyimnoIIKCA1ZBQAAAgAIAAAA8CTPER3RER3RER3RER3RER3P8RxREiVREiXRMi1TMz1VVFVXdm1Zl3Xbt4Vd2HXf133f141fF4ZlWZZlWZZlWZZlWZZlWZZlCUJDVgEAIAAAAEIIIYQUUkghhZRijDHHnINOQgmB0JBVAAAgAIAAAAAAR3EUx5EcyZEkS7IkTdIszfI0T/M00RNFUTRNUxVd0RV10xZlUzZd0zVl01Vl1XZl2bZlW7d9WbZ93/d93/d93/d93/d939d1IDRkFQAgAQCgIzmSIimSIjmO40iSBISGrAIAZAAABACgKI7iOI4jSZIkWZImeZZniZqpmZ7pqaIKhIasAgAAAQAEAAAAAACgaIqnmIqniIrniI4oiZZpiZqquaJsyq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7rukBoyCoAQAIAQEdyJEdyJEVSJEVyJAcIDVkFAMgAAAgAwDEcQ1Ikx7IsTfM0T/M00RM90TM9VXRFFwgNWQUAAAIACAAAAAAAwJAMS7EczdEkUVIt1VI11VItVVQ9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1TRN0zSB0JCVAAAZAADDtOTScs+NoEgqR7XWklHlJMUcGoqgglZzDRU0iEmLIWIKISYxlg46ppzUGlMpGXNUc2whVIhJDTqmUikGLQhCQ1YIAKEZAA7HASTLAiRLAwAAAAAAAABJ0wDN8wDL8wAAAAAAAABA0jTA8jRA8zwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRNAzTPAzTPAwAAAAAAAADN8wBPFAFPFAEAAAAAAADA8jzAEz3AE0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxNAzTPAzTPAwAAAAAAAADL8wBPFAHPEwEAAAAAAABA8zzAE0XAE0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABDgAAARZCoSErAoA4AQCHJEGSIEnQNIBkWdA0aBpMEyBZFjQNmgbTBAAAAAAAAAAAAEDyNGgaNA2iCJA0D5oGTYMoAgAAAAAAAAAAACBpGjQNmgZRBEiaBk2DpkEUAQAAAAAAAAAAANBME6IIUYRpAjzThChCFGGaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIABBwCAABPKQKEhKwKAOAEAh6JYFgAAOJJjWQAA4DiSZQEAgGVZoggAAJaliSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAEHAIAAE8pAoSErAYAoAACHolgWcBzLAo5jWUCSLAtgWQDNA2gaQBQBgAAAgAIHAIAAGzQlFgcoNGQlABAFAOBQFMvSNFHkOJalaaLIkSxL00SRZWma55kmNM3zTBGi53mmCc/zPNOEaYqiqgJRNE0BAAAFDgAAATZoSiwOUGjISgAgJADA4TiW5Xmi6HmiaJqqynEsy/NEURRNU1VVleNolueJoiiapqqqKsvSNM8TRVE0TVVVXWia54miKJqmqrouPM/zRFEUTVNVXRee53miKIqmqaquC1EURdM0TVVVVdcFomiapqmqquq6QBRF0zRVVVVdF4iiKJqmqqqu6wLTNE1VVVXXlV2Aaaqqqrqu6wJUVVVd13VlGaCqquq6rivLANd1XdeVZVkG4Lqu68qyLAAA4MABACDACDrJqLIIG0248AAUGrIiAIgCAACMYUoxpQxjEkIKoWFMQkghZFJSKimlCkIqJZVSQUilpFIySi2lllIFIZWSSqkgpFJSKQUAgB04AIAdWAiFhqwEAPIAAAhjlGKMMeckQkox5pxzEiGlGHPOOakUY84555yUkjHnnHNOSumYc845J6VkzDnnnJNSOuecc85JKaV0zjnnpJRSQugcdFJKKZ1zDkIBAEAFDgAAATaKbE4wElRoyEoAIBUAwOA4lqVpnieKpmlJkqZ5nueJpqpqkqRpnieKpqmqPM/zRFEUTVNVeZ7niaIomqaqcl1RFEXTNE1VJcuiaIqmqaqqC9M0TdNUVdeFaZqmaaqq68K2VVVVXdd1Yduqqqqu68rAdV3XdWUZyK7ruq4sCwAAT3AAACqwYXWEk6KxwEJDVgIAGQAAhDEIKYQQUsggpBBCSCmFkAAAgAEHAIAAE8pAoSErAYBUAACAEGuttdZaaw1j1lprrbXWEuestdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbVWACB2hQPAToQNqyOcFI0FFhqyEgAIBwAAjEGIMegklFJKhRBj0ElIpbUYK4QYg1BKSq21mDznHIRSWmotxuQ55yCk1FqMMSbXQkgppZZii7G4FkIqKbXWYqzJGJVSai22GGvtxaiUSksxxhhrMMbm1FqMMdZaizE6txJLjDHGWoQRxsUWY6y11yKMEbLF0lqttQZjjLG5tdhqzbkYI4yuLbVWa80FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAAAiGlGGPMOeeccw5CCKlSjDnnHIQQQgihlFJSpRhzzjkIIYRQQimlpIwx5hyEEEIIpZRSSmkpZcw5CCGEUEoppZTSUuuccxBCCKWUUkopJaXUOecghFBKKaWUUkpKLYQQQiihlFJKKaWUlFJKIYRQSimllFJKKamllEIIpZRSSimllFJSSimFEEIppZRSSimlpJRaK6WUUkoppZRSSkkttZRSKKWUUkoppZSSWkoppVJKKaWUUkopJaXUUkqllFJKKaWUUkpLqaWUSimllFJKKaWUlFJKKaVUSimllFJKKSml1FpKKaWUSimllFJaaymlllIqpZRSSimltNRaay21lEoppZRSSmmttZRSSimVUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIAZAAADKOUUkktRYIipRiklkIlFXNQUooocw5SrKlCziDmJJWKMYSUg1QyB5VSzEEKIWVMKQatlRg6xpijmGoqoWMMAAAAQQAAgZAJBAqgwEAGABwgJEgBAIUFhg4RIkCMAgPj4tIGACAIkRkiEbEYJCZUA0XFdACwuMCQDwAZGhtpFxfQZYALurjrQAhBCEIQiwMoIAEHJ9zwxBuecIMTdIpKHQgAAAAAgAMAPAAAJBtAREQ0cxwdHh8gISIjJCUmJygCAAAAAOAGAB8AAEkKEBERzRxHh8cHSIjICEmJyQlKAAAggAAAAAAACCAAAQEBAAAAAIAAAAAAAQFPZ2dTAAQAWgAAAAAAANJ5bJcCAAAAgj7NLiU1/yA4MrTSmOluanqbtcPY/w//Af8U/xX/Fv8o/yL/Jv81/yYB9CSz/hJutS5S5uELBR8L66hMbCYB6MjXvbm6N4IgSjhP7Ni7XXFc7HctclM1G+vWvr5XYQAyllz7LOFFS20ZEloiGEuufZHwolJbhoIF3hCiUpFlWa1WcwKzs5mKzVXFlAZVxQoA4EWMjRg1xqiUMexaF1uDNRiGo6pYHAmCiGLHtCLBCqPGGdEuFEgYWgNIfUSbgUHqpLMkba+Ox3YcV0HntMBK9JVIkcQkGUSlqCOxiCUI1EQCkr79gl021AC+q0GQFLgfhlyTuqurXnmbGkVBatGzTAZLpKalRNAuyIBJtXMq1xe7iqbsosaOZ8DMxCHp2iMMdEPSe6vrEduzRm23HTupx70trpwqqjvluaGIERghMJ/ty3jvZxVrv+XlVmP/Oue72/1TtbvC/nyvd/l5nYY8oCEEDWpoMLQR3iIgA3DBDRh8zNrQmjpdAVYF11gRACxSpctbnjn0FqnS9S33HLjnAnBKKYQSgKkphnq9SozzuqLeoVEk8T4zztsxvp1xX7dXM0V4ay0D3JLLdolfAb8ll+0SvwJxVtaESIlT4g5grYhaY/qr42nn19PO6vHK4MjskS8tPaFwEAUaKb6EFwkP4gITiBRfwouEB3GBCRxFTrudCgB0CF0RHTqJDsPQESMEAAAAAABA1LA6WBwcHS1WmxWH2nIkABhYMtKYmRvpdXqdXqfXaCPRSDQSjUSDMDCgqnqqoNmmVi/bAv5jyoQPgkyIKv4IIwOAjMKbzAY285LMx7e3OFBeGnyiiQ1gMXJggCQCIFgpI8tMQJjXTQPQVUAzkADSgKR4JMMHQFcBYcllcFzCZOMBATgIvAN+Gd7zj+Pd1PpG28BleM8/j3cX6xsmcAOtVi+BjUeHa4m7GIahoxgLAAAAAAAOWK1qGKJWUxxV7ajdqmKgpopFTLtpYcuKWrXEigWWllhYyNGQSEBoFOCwmrfjnHF7Nr2aT7pJhkTuv4YrG2fSU92xBdyU+yw0CuTYSMQhbuoMFXMfO47je61IYyMJD1qwLQGDRGhawihYsJFu8ibHTdIL6ZLWPN+JZN1kXXPyouTnSYokvcg3ItfzpENX1l4nEK3n4KT9mbaMsm5LfNQBjswpUQC+OX6is+iveiTYkQCb4xc6ivaoR4IdCfAHAAAA4CGTYYphGAYJyAYAAAAAAAAAAACRlSYAQEhVkQiJwFBjURpZ0CiGUgiJkAjJL1aMmAMA70ggI2Vo0OAhGN0aAJnwABe6SFaABbKAxFEYrCqNIKlobWTmLiF8ljVlVu3Eb5Iwcoc+WokPNBi1DjrQKAaABSzoCwCABQAALl4ZnjZ8l29TJuywoDI8bfgu36ZM2GHBW0RmADLrmRyJySN0SAzDNWQykaoKAAAAANZaNVasGlSNtYJpFbvF0bBaxIqFqCKOBpEwjATRMKKoI0QJCBU4VOAw9tibMAiDMGi3tubO7e7NNTmxx9zN3Vx0ikgksv/q1avNnPyu7/oIbGks2ZIdra5QFrIrsyALsiALUjTu5/pycmLBzd3czUUkEolIIY+bLMiCFE0++eSTz30pkkseySOtXjCpVKp0vHTu3F6v19frJaPxkXoksq+x+5vrtYH12nApK5VK1VJeptdz9LSHalAA/hjeM1dJs9SvRnrOenw8hvfMVdIs9avhOevx8gcAAAAAAABkMshkkIBsAEAAAAAAAAAAAFFJaEkAACAlAtVAo1oWBmZojcxNTC0KAICLC0AoJOtJRV+hLA6hMrCr+g4swBCAAmUuQPkBoAEADgDeCN4zV0mz1KuQnruOj0bwkb1KmqFeBc9dj48/AAAAAAAAMAzDIBsAAAMAAAAAAAAAGiQyGgAAQCBRVGlsSU2mAlWjGmkVnQAAADQsH8saKpHAMhSManQF9A6v48auUQcAVAMAhmUugAYB3ug9Mjep61afDWPXgEbvkblJXbf4aBinHvgDAAAAAAAggWEYhmEQCAABAQAAAAAAQDZJyAYAAJAIVJWWbZoYVotI1VQaSRMkAFwA0AADQAET7osFCn25VjuXuj0W3lu14wv2AoxhYIEGDABohgVgAYADAHAOUAAHiAA+yF2zN4lrV58FY9eBQe6avUlcu/osGLse+AMAAAAAACCBYViWoSNGqBgAAAAAAIASJGQLAACAQAojVWPF5JMkFyNVaS6lBSSAhc4LAGyfCn3PVHNt7fCW67yv3kd98Hl9TM/Wsq8+ZA4vL/vLE9pMuNvRKJH/DduZWQDWGlYF+dBV+3oHVw7A0QA4TAZ3Sw6AA5A2CTTyd7P5AD6YPTI3KWsXvzW0U8eVweyRuUlZu/jVME498AcAAAAAAGAYNiWGUVUxAAAAAABQA5AtAAAgkAh8Wd3C8duyXoPEkk5vCQkgBxoATTKJhkjHW2bR03Up81cjO7FEayY18anKnBanNiTLjPvr5n2TpZDhm1prmswUMyydE6b9a7dVMwvVwqSlYn5ZscOzUNaigSRlSE4BMawVTFoOsWGJyhPaqEnjNWXUhWye/Fn/+YuW03XAYAG+d11zd8nnFp8Ndg3Yu+65m+Szi88Guwb8AQAAAAAACQzDJqYYVYkYAwAAAAAQTQmikQAAgBBInbFiIDUajQBjI0sWkAAAoH+4ODCosWuG2qOhy6pxuvGnZNUth5mD9OqfiExBT95kwWYqSQbgmaIQW1v3pt1xrK4FjKW5R3lS83aRAqp392QV0M2bJPTsoip7KGYe6f3PT3yrWsVEe5Fa1srwYl4RSfPnpW5GWmfO1pW0TiKuDvZ6O9diIMO644R0xgB+V91zV4nnVq8Bsx64q665m8R9V68Box74AwAAAGAAJLBsFVuliqoYAAAAAIBoAEpJAAAphQ1C6LTmpqYWhBBSbywMAIAMgPkAd2DYpQKqJ2m4S7RiaB3vx7iQh+ovBqp3kztJXragwdXvKfoUkHcBYvgmSO5srpyc7mR002McEgVP9cyQXZ54yHP10nLlhnWOj3b+c3vn5BeZG1AXucuTnIdlkAEbEAP6d0rd2leSard/j1k1cbWfVermjFyIzJF0kXZlGSxiQMLSNizSw51z9ZRxqCKAHAAeN30PThKWq49Gkerg2jZ9DM3/CvXRSErdGtc/AAAAACAhV42qqqQBVaIKAAAAQM0QUDIBABBSIqShYmzJVG+KomjNEFoBAIA2F8Y5SeX+8GabWefCmtzlBVUtWRBXJ0zCmTxnhoyfh5nkHR2Fo2PPHBhVTtVpNTFcSf1btS1R/QJtOpHZquwfJInrFK7LRYM1M4zrhaIr2XLPJe0q7Q2P8akOp0jyjKjN0vEjzSghnUVF6srZBhKoDz33DN3ZNN1VTD7WGENCvi+IIEEyv//81b9uyNmLvyTVN9afJ/bK7r8c2vfkAyQuSQJM8mUR4/MHrWw258zy7WqZmVB4zNESZZv2ll9icNByaECDDACeB/2VLxK7DI9J1GL6SMmD/spXSR33mhBi8sAfAAAAANhKxRTLVlJVFSMQAAAAQKkERBMAIACQUmc41Yokoi5VCK1iYGwOAAAVAMjJKjQV01d6HmogGWa3uCFhq+eAWN5qJzk1dXyzKMc7f1nNOJ3166VeTUkc3ncOhRr1d1b9dwJhfvq9h06x6asm0//pCAiqds0IzGRKSLjjooK58vqRyBnSvj89XdA4JmmoZtHSTK19OgsXFP1/mPPJMowKaLKu7BfGnU4vPEkw9difiZHxSF/zRWz/vumfdxHwdEtXU+zlwjMepYK4OZdeP3td5jGOPb0g41l/sRVUMD45AIcNPuf8ziVJnXQNEFsPzDm/81VSJzwGCBX8AQAAADCS8mArjWKbqqoqBgAAALQQAZoBACAFSIRMyFgpfup2BUBNcuc6kgUABJicAwm14jeHykz69VS8687Rr7/Xpv8kz8q2fpansrkAmTeXRKBBRGTTP+eR2/+eWys+ufGvq5Kz6SeovGvXaanow+ydO0tK9vcvuj/byqhjMqfXDqmXW4/LJGbp8Q2LS1aSSVVfp4ISCUXPrprLxNMNB9hX9y2eWVveN5OzqK/ceU4zVPbKeVrKzBoYZI0PgIQsihsTjnS07oX52c/CZnr8lUEXf2ISIfXSKxVMpKiZSHl0w63OrhOpqq0jH4B8PYs+mgMyGCFncBmqBAX+xvzKeklNhlcDsXXAG/MzVyR2wscA4YM/AAAAALKZysVJVSmpGgwqBgAAAGpGgJoBADYSABkv71JHy/nyeTluxu8rogUAaQAAqGahuSVtte9O8unS+/sM4WRRPQyXYuiO47jP15meSzmez2MRLPk8WQ9+uCCKCeO6+AJxPpMalfmCo0zP8OqcFdV8vmQyXgAHnA/jLnc2UEKF6iHffd8u/qXKrg1FDoeZ1PlqqBuQUS4UkE7qpG5czz8hk4JzevZknqgmvxdrPDJ9MSpmc56ZXYUiT65I8bt9mzEFu+fPm/vftSK3mJf0kHh52gh+Z/A5O4K1HJ++boy6mUBGpT48CoQJYqfCPaT18QGQl8JzUzOguQGelnwNRAl3wsdIEHEZ0pLPgSLxJnyMBOFX4AMAkTOaLosqom6dIgAy2WIqF1vFqKpBFQAAAFRACXLfaFS1FkEVAA6AQbXAUaIPbMqXOEsHJwSo2bw74sBSOeOnO6t6yLJLKTbW9Dq+7eq7FmbwDFf19kxh5+Yse8iuXVVvga0YhsLu+uM881wFkLymlo7jyhLPwFDcW8VVULywnqxnDOuXFTfZynuAvp1NUe9nBz0toKuyEW/j2qY1TUPVM3QuPPhUAkxnvF/nb1895wYvguSDly/z/7skF9+x326O6zyRPiq+pfsYO56YyktxS9vmelMOqbrxmSjfLjMiuLj/Tkq1BcesV4RqMhM/k3KmS2U8XJvvQRADnpZ8ZdP3IayzQcQgLfnOxs9N6GeDiMEfAAAAoMlW5UrFsklVVRUAAADIQoICAIQqQCKEh3ffbRv67SmkVMwxNJEAACgkEgoAAJZlyRHresrdNelLKA9qcx/PNJ3ROtU1edcIHoplF1VbTdx4lw51V+tctezY0w83Tynt0lPxXaeppzqPBUpXrQcHaCqmvxrorpnrCzj0/63i3n0dGIo6OdsrbCg23WRRTfdAliC1l/aBeRec9Ns6syVWQiQyBw+7S1/1oGPbPL6rRJ+hk1TTPXdxpnWu3jsvpMwDV2v/8obdH1fSdv/GfpuXVv8a+5a+bb0NjZn+Hy+3eL/lpsTMjElt7lKp74cx5lVc+J0ecZyXhNoT/nYe39WJQ/v/E0/IZm5ugw0DAJ6WfFlJ4k9aJQg1LaQl37aX+JMWA8JPFX4AAJWsBoozVAOwxVZVsZWSqqoqBgAAIGupqwr5XAUAgEQAIKVB8ZC88bpRM7quKb5O9s+zTCfVXF0oduZ71zk69ox25k73pUMdT5eK4hzwVN+U+BcVT+7GKHYzI/Yoz2ZmISly6jd1vkP2pmvSVeuH65lGY3W0L7smc7qqORON5kzFLJWmGRhltwusXDITJn2/xg/3o4bpXfOYJAf956Z5G1TVtlDDUAXP3dSMG2bf6UbeVa1QhjnMjkX1sGfiocx1A2T30SkvSs+NnG+uVPe0zfHfghTZfMfMd/bLuauitdS29qrPYlrq98+VRAa3JFZNeS8f8DTqGVFz0oqCoBDZCGv8k4C6DABelnxyUSRIegggNYwl72QREZEeKAAfAJB1yiwzyPplFahUOVdVJTooaqRKVAAAAAAAI8GxgkXMc7YKAACokmQ6KjyE+3088Jm2lr27+vTztobbIQ6fJM2Bqax5WU7gCjldlUqK3E920lD7ETV5XxllFpWjrykA3lJZ/HbRfeLUGc68fDM5tQGcFvQkEQzKaRprHEGOKJAmWg1UInLy/OkiZ7sSJ2hv591dc2Hx5AYS8tTpP8A0m+6abCb7cqfAVBL3ri7KQOdEfW05VaioH+rZbk2rziaFzkq+MZJsy1aMqX/bAoEt38jiK+l1d327Cf6SZbAtO5bRH5fPdajrdrSC0/3J6yX13CxdOpq6QgmLIgPxhviVpDp/JlPVizZfiprLzuQ6AF6WfMEkIsZdAFCWfKIiEsH1AwAfAMiYPDMzkLOnR4K+crGVq6pUFVVRAQAAAMATg33eSZLFeCsiAAAFOt1uF+0e9fCw+2Gu/Hl5uTWfjk/dzPnK6U8Qo+zJk5ycWp5u4tG87qxDROCQPhotvkmvlRcu7JxaNPKp7QU+oD2ZTHRpPFeZmd9m7nXmFGVWFk7nk0lSu+e+s4aK01NTzwvJZud8IVcPUuaeJBmginLxb9CV6zi7TkSt1DypPpNzOF0fxQkzLqiEiZre/XT3HSNUz7M8AN2aKgZq/qObRsBk6k6o8jQMaWFhB0ju7tuNvipHw3BbBrMqGbarHhP8p76l5TTW9MJZlbD/WqK9dCtuFaHuokJgwyUAsnT3/Ek0D62NFwpHZIzLrU5vDwMGtAJCQPSp54YDHpb80lXiY417JVHV1RuW/DJRwhvnQAHXfaaciym2GLoMqipGYAAAAAAHtbCxw7Z1ViuZEyOr3dm2tjRU0KDVcY13pPbj/17Eby7ncWa7f9NYtJFO9qHyTsUJCIuwDB/i6nZznn3SDaQ77+x38etxXl6PYX3mqt53gixfX7uybW6aWv3Wr1mML9W78gwwv//vbfbvf3aT9+VnV8+Az/dPA4chOD5/PoXMEgbr8j670su6TA9M1/6e05FKb9a/WXN2+zr7ZKHiurOmAdhnF4ymp4d53sWX+3bV81k37S/fv2X8ts9na/fvv//WAUjP/t40D897rS0g4V2euEnjaEM2AyWOhbYZBwWPx7sAT9xgvs3Pz9x73KxdZpq1X+yCh3uX8wCwywAO" From 17d99db434755dbc728cbd3bd44fdd2d996c3087 Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Mon, 31 Aug 2020 10:07:45 -0500 Subject: [PATCH 07/14] updated PyPi version --- build/lib/gradio/inputs.py | 46 ++++++++++++++++++++------- build/lib/gradio/interface.py | 24 +++++++++++--- build/lib/gradio/static/css/style.css | 6 +--- build/lib/gradio/test_data.py | 2 ++ gradio.egg-info/PKG-INFO | 2 +- gradio.egg-info/SOURCES.txt | 1 + setup.py | 2 +- 7 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 build/lib/gradio/test_data.py diff --git a/build/lib/gradio/inputs.py b/build/lib/gradio/inputs.py index 3ea254c7bc..76f0e921cb 100644 --- a/build/lib/gradio/inputs.py +++ b/build/lib/gradio/inputs.py @@ -15,17 +15,19 @@ import base64 import numpy as np import PIL import scipy.io.wavfile -from gradio import processing_utils +from gradio import processing_utils, test_data import pandas as pd import math import tempfile + class InputComponent(Component): """ Input Component. All input components subclass this. """ pass + class Textbox(InputComponent): """ Component creates a textbox for user to enter input. Provides a string (or number is `type` is "float") as an argument to the wrapped function. @@ -33,7 +35,7 @@ class Textbox(InputComponent): """ def __init__(self, lines=1, placeholder=None, default=None, numeric=False, type="str", label=None): - ''' + """ Parameters: lines (int): number of line rows to provide in textarea. placeholder (str): placeholder hint to provide behind textarea. @@ -41,7 +43,7 @@ class Textbox(InputComponent): numeric (bool): DEPRECATED. Whether the input should be parsed as a number instead of a string. type (str): Type of value to be returned by component. "str" returns a string, "number" returns a float value. label (str): component name in interface. - ''' + """ self.lines = lines self.placeholder = placeholder self.default = default @@ -50,6 +52,13 @@ class Textbox(InputComponent): self.type = "number" else: self.type = type + if default is None: + self.test_input = { + "str": "the quick brown fox jumped over the lazy dog", + "number": 786.92, + }[type] + else: + self.test_input = default super().__init__(label) def get_template_context(self): @@ -77,7 +86,6 @@ class Textbox(InputComponent): raise ValueError("Unknown type: " + self.type + ". Please choose from: 'str', 'number'.") - class Slider(InputComponent): """ Component creates a slider that ranges from `minimum` to `maximum`. Provides a number as an argument to the wrapped function. @@ -101,6 +109,7 @@ class Slider(InputComponent): step = 10 ** power self.step = step self.default = minimum if default is None else default + self.test_input = self.default super().__init__(label) def get_template_context(self): @@ -126,10 +135,11 @@ class Checkbox(InputComponent): """ def __init__(self, label=None): - ''' + """ Parameters: label (str): component name in interface. - ''' + """ + self.test_input = True super().__init__(label) @classmethod @@ -154,6 +164,7 @@ class CheckboxGroup(InputComponent): ''' self.choices = choices self.type = type + self.test_input = self.choices super().__init__(label) def get_template_context(self): @@ -186,6 +197,7 @@ class Radio(InputComponent): ''' self.choices = choices self.type = type + self.test_input = self.choices[0] super().__init__(label) def get_template_context(self): @@ -202,6 +214,7 @@ class Radio(InputComponent): else: raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") + class Dropdown(InputComponent): """ Component creates a dropdown of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. @@ -217,6 +230,7 @@ class Dropdown(InputComponent): ''' self.choices = choices self.type = type + self.test_input = self.choices[0] super().__init__(label) def get_template_context(self): @@ -248,7 +262,7 @@ class Image(InputComponent): invert_colors (bool): whether to invert the image as a preprocessing step. source (str): Source of image. "upload" creates a box where user can drop an image file, "webcam" allows user to take snapshot from their webcam, "canvas" defaults to a white image that can be edited and drawn upon with tools. tool (str): Tools used for editing. "editor" allows a full screen editor, "select" provides a cropping and zoom tool. - type (str): Type of value to be returned by component. "numpy" returns a numpy array with shape (width, height, 3), "pil" returns a PIL image object, "file" returns a temporary file object whose path can be retrieved by file_obj.name. + type (str): Type of value to be returned by component. "numpy" returns a numpy array with shape (width, height, 3) and values from 0 to 255, "pil" returns a PIL image object, "file" returns a temporary file object whose path can be retrieved by file_obj.name. label (str): component name in interface. ''' self.shape = shape @@ -257,6 +271,7 @@ class Image(InputComponent): self.tool = tool self.type = type self.invert_colors = invert_colors + self.test_input = test_data.BASE64_IMAGE super().__init__(label) @classmethod @@ -293,6 +308,8 @@ class Image(InputComponent): file_obj = tempfile.NamedTemporaryFile() im.save(file_obj.name) return file_obj + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'pil', 'file'.") def process_example(self, example): if os.path.exists(example): @@ -318,14 +335,15 @@ class Audio(InputComponent): """ def __init__(self, source="upload", type="numpy", label=None): - ''' + """ Parameters: source (str): Source of audio. "upload" creates a box where user can drop an audio file, "microphone" creates a microphone input. type (str): Type of value to be returned by component. "numpy" returns a 2-set tuple with an integer sample_rate and the data numpy.array of shape (samples, 2), "file" returns a temporary file object whose path can be retrieved by file_obj.name, "mfcc" returns the mfcc coefficients of the input audio. label (str): component name in interface. - ''' + """ self.source = source self.type = type + self.test_input = test_data.BASE64_AUDIO super().__init__(label) def get_template_context(self): @@ -367,6 +385,7 @@ class File(InputComponent): label (str): component name in interface. ''' self.type = type + self.test_input = None super().__init__(label) @classmethod @@ -391,7 +410,7 @@ class Dataframe(InputComponent): """ def __init__(self, headers=None, row_count=3, col_count=3, datatype="str", type="pandas", label=None): - ''' + """ Parameters: headers (List[str]): Header names to dataframe. row_count (int): Limit number of rows for input. @@ -399,14 +418,17 @@ class Dataframe(InputComponent): datatype (Union[str, List[str]]): Datatype of values in sheet. Can be provided per column as a list of strings, or for the entire sheet as a single string. Valid datatypes are "str", "number", "bool", and "date". type (str): Type of value to be returned by component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for a Python array. label (str): component name in interface. - ''' + """ self.headers = headers self.datatype = datatype self.row_count = row_count self.col_count = len(headers) if headers else col_count self.type = type - super().__init__(label) + sample_values = {"str": "abc", "number": 786, "bool": True, "date": "02/08/1993"} + column_dtypes = [datatype]*self.col_count if isinstance(datatype, str) else datatype + self.test_input = [[sample_values[c] for c in column_dtypes] for _ in range(row_count)] + super().__init__(label) def get_template_context(self): return { diff --git a/build/lib/gradio/interface.py b/build/lib/gradio/interface.py index 2a5140737c..cc7b842933 100644 --- a/build/lib/gradio/interface.py +++ b/build/lib/gradio/interface.py @@ -193,19 +193,19 @@ class Interface: return config - def process(self, raw_input): + def process(self, raw_input, predict_fn=None): """ :param raw_input: a list of raw inputs to process and apply the prediction(s) on. + :param predict_fn: which function to process. If not provided, all of the model functions are used. :return: processed output: a list of processed outputs to return as the prediction(s). duration: a list of time deltas measuring inference time for each prediction fn. """ - processed_input = [input_interface.preprocess( - raw_input[i]) for i, input_interface in - enumerate(self.input_interfaces)] + processed_input = [input_interface.preprocess(raw_input[i]) + for i, input_interface in enumerate(self.input_interfaces)] predictions = [] durations = [] for predict_fn in self.predict: @@ -253,6 +253,22 @@ class Interface: thread.keep_running = False networking.url_ok(path_to_local_server) + def test_launch(self): + for predict_fn in self.predict: + print("Test launching: {}()...".format(predict_fn.__name__), end=' ') + + raw_input = [] + for input_interface in self.input_interfaces: + if input_interface.test_input is None: # If no test input is defined for that input interface + print("SKIPPED") + break + else: # If a test input is defined for each interface object + raw_input.append(input_interface.test_input) + else: + self.process(raw_input) + print("PASSED") + continue + def launch(self, inline=None, inbrowser=None, share=False, debug=False): """ Parameters diff --git a/build/lib/gradio/static/css/style.css b/build/lib/gradio/static/css/style.css index acf3612ca3..a9ec927984 100644 --- a/build/lib/gradio/static/css/style.css +++ b/build/lib/gradio/static/css/style.css @@ -7,17 +7,13 @@ body#lib { button, input[type="submit"], input[type="reset"], input[type="text"], input[type="button"], select[type="submit"] { border: none; font: inherit; - cursor: pointer; outline: inherit; -webkit-appearance: none; } select { font: inherit; } -label, input[type=radio], input[type=checkbox], select, input[type=range] { - cursor: pointer; -} -button, input[type="submit"], input[type="reset"], input[type="button"], select[type="submit"] { +label, input[type=radio], input[type=checkbox], select, input[type=range], button, input[type="submit"], input[type="reset"], input[type="button"], select[type="submit"] { cursor: pointer; } diff --git a/build/lib/gradio/test_data.py b/build/lib/gradio/test_data.py new file mode 100644 index 0000000000..e157d43790 --- /dev/null +++ b/build/lib/gradio/test_data.py @@ -0,0 +1,2 @@ +BASE64_IMAGE = "data:image/gif;base64,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" +BASE64_AUDIO = "data:audio/ogg;base64,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" diff --git a/gradio.egg-info/PKG-INFO b/gradio.egg-info/PKG-INFO index 2dcb1bdf14..a240ec25d8 100644 --- a/gradio.egg-info/PKG-INFO +++ b/gradio.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: gradio -Version: 1.1.7 +Version: 1.1.8.1 Summary: Python library for easily interacting with trained machine learning models Home-page: https://github.com/gradio-app/gradio-UI Author: Abubakar Abid diff --git a/gradio.egg-info/SOURCES.txt b/gradio.egg-info/SOURCES.txt index ac1490d654..231508fe6b 100644 --- a/gradio.egg-info/SOURCES.txt +++ b/gradio.egg-info/SOURCES.txt @@ -9,6 +9,7 @@ gradio/networking.py gradio/outputs.py gradio/processing_utils.py gradio/strings.py +gradio/test_data.py gradio/tunneling.py gradio/utils.py gradio.egg-info/PKG-INFO diff --git a/setup.py b/setup.py index 83e1accf1d..2a1ea3fd12 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ except ImportError: setup( name='gradio', - version='1.1.7', + version='1.1.8.1', include_package_data=True, description='Python library for easily interacting with trained machine learning models', author='Abubakar Abid', From 9d4b48281a955a1e94d943641d07456d7d96cc3c Mon Sep 17 00:00:00 2001 From: dawoodkhan82 Date: Mon, 31 Aug 2020 12:54:14 -0400 Subject: [PATCH 08/14] plotting 2 graphs fix --- demo/form_graph.py | 6 ++++-- gradio/processing_utils.py | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/demo/form_graph.py b/demo/form_graph.py index e3568620c1..48eaa8fbd2 100644 --- a/demo/form_graph.py +++ b/demo/form_graph.py @@ -9,14 +9,16 @@ def plot_forecast(final_year, companies, noise, show_legend, point_style): x = np.arange(start_year, final_year + 1) year_count = x.shape[0] plt_format = ({"cross": "X", "line": "-", "circle": "o--"})[point_style] + fig = plt.figure() + ax = fig.add_subplot(1) for i, company in enumerate(companies): series = np.arange(0, year_count, dtype=float) series = series ** 2 * (i + 1) series += np.random.rand(year_count) * noise - plt.plot(x, series, plt_format) + ax.plot(x, series, plt_format) if show_legend: plt.legend(companies) - return plt + return fig gr.Interface(plot_forecast, diff --git a/gradio/processing_utils.py b/gradio/processing_utils.py index 6850c04aa3..1e4fba54d2 100644 --- a/gradio/processing_utils.py +++ b/gradio/processing_utils.py @@ -32,7 +32,6 @@ def encode_plot_to_base64(plt): with BytesIO() as output_bytes: plt.savefig(output_bytes, format="png") bytes_data = output_bytes.getvalue() - plt.close() base64_str = str(base64.b64encode(bytes_data), 'utf-8') return "data:image/png;base64," + base64_str From eb9a3c2fe9b080aafe6688e208590f782cbd7316 Mon Sep 17 00:00:00 2001 From: dawoodkhan82 Date: Mon, 31 Aug 2020 17:47:06 -0400 Subject: [PATCH 09/14] public link messaging fix --- gradio/interface.py | 19 +++++++++---------- gradio/outputs.py | 3 ++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/gradio/interface.py b/gradio/interface.py index cc7b842933..0673351a64 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -309,7 +309,9 @@ class Interface: if not networking.url_ok(path_to_local_server): share = True else: - print(strings.en["RUNNING_LOCALLY"].format(path_to_local_server)) + print(strings.en["RUNNING_LOCALLY (To get a public link of a " + "hosted model set Share=True)"].format( + path_to_local_server)) else: if debug: print("Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. " @@ -361,15 +363,12 @@ class Interface: # with the interface. if inline: from IPython.display import IFrame, display - if (is_colab): - # Embed the remote interface page if on google colab; - # otherwise, embed the local page. - print("Interface loading below...") - while not networking.url_ok(share_url): - time.sleep(1) - display(IFrame(share_url, width=1000, height=500)) - else: - display(IFrame(path_to_local_server, width=1000, height=500)) + # Embed the remote interface page if on google colab; + # otherwise, embed the local page. + print("Interface loading below...") + while not networking.url_ok(share_url): + time.sleep(1) + display(IFrame(share_url, width=1000, height=500)) config = self.get_config_file() config["share_url"] = share_url diff --git a/gradio/outputs.py b/gradio/outputs.py index c00cea639c..1f72310d20 100644 --- a/gradio/outputs.py +++ b/gradio/outputs.py @@ -127,7 +127,8 @@ class Image(OutputComponent): ''' Parameters: type (str): Type of value to be passed to component. "numpy" expects a numpy array with shape (width, height, 3), "pil" expects a PIL image object, "file" expects a file path to the saved image, "plot" expects a matplotlib.pyplot object. - plot (bool): DEPRECATED. Whether to expect a plot to be returned by the function. + plot (bool): DEPRECATED. Whether to expect a plot figure to be + returned by the function. label (str): component name in interface. ''' if plot: From 0cc26671efe19270adc1b8a779899304abebc57a Mon Sep 17 00:00:00 2001 From: dawoodkhan82 Date: Mon, 31 Aug 2020 17:52:01 -0400 Subject: [PATCH 10/14] messaging fix --- gradio/interface.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradio/interface.py b/gradio/interface.py index 0673351a64..5fb3eed353 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -309,9 +309,9 @@ class Interface: if not networking.url_ok(path_to_local_server): share = True else: - print(strings.en["RUNNING_LOCALLY (To get a public link of a " - "hosted model set Share=True)"].format( - path_to_local_server)) + print(strings.en["RUNNING_LOCALLY"].format(path_to_local_server)) + print("To get a public link for a hosted model, " + "set Share=True") else: if debug: print("Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. " From 895e3822eb678ef3d252d11487c581aca5fb4385 Mon Sep 17 00:00:00 2001 From: dawoodkhan82 Date: Mon, 31 Aug 2020 17:54:22 -0400 Subject: [PATCH 11/14] messaging fix --- gradio/interface.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradio/interface.py b/gradio/interface.py index 5fb3eed353..d56acb2408 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -310,8 +310,6 @@ class Interface: share = True else: print(strings.en["RUNNING_LOCALLY"].format(path_to_local_server)) - print("To get a public link for a hosted model, " - "set Share=True") else: if debug: print("Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. " @@ -344,6 +342,8 @@ class Interface: if self.verbose: print(strings.en["COLAB_NO_LOCAL"]) else: # If it's not a colab notebook and share=False, print a message telling them about the share option. + print("To get a public link for a hosted model, " + "set Share=True") if self.verbose: print(strings.en["PUBLIC_SHARE_TRUE"]) share_url = None From cfea104439c1712d441b09a5973f0fc0e73fd3c7 Mon Sep 17 00:00:00 2001 From: dawoodkhan82 Date: Mon, 31 Aug 2020 17:59:24 -0400 Subject: [PATCH 12/14] inline share link fix --- gradio/interface.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gradio/interface.py b/gradio/interface.py index d56acb2408..d83d2de2cc 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -366,9 +366,12 @@ class Interface: # Embed the remote interface page if on google colab; # otherwise, embed the local page. print("Interface loading below...") - while not networking.url_ok(share_url): - time.sleep(1) - display(IFrame(share_url, width=1000, height=500)) + if share: + while not networking.url_ok(share_url): + time.sleep(1) + display(IFrame(share_url, width=1000, height=500)) + else: + display(IFrame(path_to_local_server, width=1000, height=500)) config = self.get_config_file() config["share_url"] = share_url From 9aebacef06b8060187770e99fef8f9780aba746d Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Mon, 31 Aug 2020 18:34:52 -0500 Subject: [PATCH 13/14] updated version number --- build/lib/gradio/component.py | 52 - build/lib/gradio/inputs.py | 603 -- build/lib/gradio/interface.py | 418 - build/lib/gradio/networking.py | 265 - build/lib/gradio/outputs.py | 388 - build/lib/gradio/processing_utils.py | 157 - .../gradio/static/apple-app-site-association | 11 - build/lib/gradio/static/css/gradio.css | 127 - .../css/interfaces/input/checkbox_group.css | 20 - .../static/css/interfaces/input/dropdown.css | 7 - .../static/css/interfaces/input/file.css | 15 - .../static/css/interfaces/input/image.css | 104 - .../css/interfaces/input/microphone.css | 52 - .../static/css/interfaces/input/radio.css | 15 - .../static/css/interfaces/input/sketchpad.css | 53 - .../static/css/interfaces/input/slider.css | 15 - .../static/css/interfaces/input/textbox.css | 16 - .../static/css/interfaces/input/webcam.css | 20 - .../static/css/interfaces/output/audio.css | 15 - .../interfaces/output/highlighted_text.css | 22 - .../static/css/interfaces/output/html.css | 15 - .../static/css/interfaces/output/image.css | 13 - .../static/css/interfaces/output/json.css | 0 .../css/interfaces/output/key_values.css | 13 - .../static/css/interfaces/output/label.css | 48 - .../static/css/interfaces/output/textbox.css | 15 - build/lib/gradio/static/css/loading.css | 6875 ----------------- build/lib/gradio/static/css/style.css | 95 - .../gradio/static/css/vendor/cropper.min.css | 9 - build/lib/gradio/static/css/vendor/icons.svg | 1 - .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 86 -> 0 bytes .../vendor/images/ui-icons_444444_256x240.png | Bin 3266 -> 0 bytes .../vendor/images/ui-icons_555555_256x240.png | Bin 3274 -> 0 bytes .../vendor/images/ui-icons_777620_256x240.png | Bin 3262 -> 0 bytes .../vendor/images/ui-icons_777777_256x240.png | Bin 3266 -> 0 bytes .../vendor/images/ui-icons_cc0000_256x240.png | Bin 3262 -> 0 bytes .../vendor/images/ui-icons_ffffff_256x240.png | Bin 3264 -> 0 bytes .../gradio/static/css/vendor/jexcel.min.css | 1 - .../gradio/static/css/vendor/jquery-ui.css | 1315 ---- .../lib/gradio/static/css/vendor/jsonTree.css | 115 - setup.py | 2 +- 41 files changed, 1 insertion(+), 10891 deletions(-) delete mode 100644 build/lib/gradio/component.py delete mode 100644 build/lib/gradio/inputs.py delete mode 100644 build/lib/gradio/interface.py delete mode 100644 build/lib/gradio/networking.py delete mode 100644 build/lib/gradio/outputs.py delete mode 100644 build/lib/gradio/processing_utils.py delete mode 100644 build/lib/gradio/static/apple-app-site-association delete mode 100644 build/lib/gradio/static/css/gradio.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/checkbox_group.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/dropdown.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/file.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/image.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/microphone.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/radio.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/sketchpad.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/slider.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/textbox.css delete mode 100644 build/lib/gradio/static/css/interfaces/input/webcam.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/audio.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/highlighted_text.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/html.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/image.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/json.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/key_values.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/label.css delete mode 100644 build/lib/gradio/static/css/interfaces/output/textbox.css delete mode 100644 build/lib/gradio/static/css/loading.css delete mode 100644 build/lib/gradio/static/css/style.css delete mode 100644 build/lib/gradio/static/css/vendor/cropper.min.css delete mode 100644 build/lib/gradio/static/css/vendor/icons.svg delete mode 100644 build/lib/gradio/static/css/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_444444_256x240.png delete mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_555555_256x240.png delete mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_777620_256x240.png delete mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_777777_256x240.png delete mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_cc0000_256x240.png delete mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_ffffff_256x240.png delete mode 100644 build/lib/gradio/static/css/vendor/jexcel.min.css delete mode 100644 build/lib/gradio/static/css/vendor/jquery-ui.css delete mode 100644 build/lib/gradio/static/css/vendor/jsonTree.css diff --git a/build/lib/gradio/component.py b/build/lib/gradio/component.py deleted file mode 100644 index 4474cbf4e8..0000000000 --- a/build/lib/gradio/component.py +++ /dev/null @@ -1,52 +0,0 @@ -class Component(): - """ - A class for defining the methods that all gradio input and output components should have. - """ - - def __init__(self, label): - self.label = label - - def get_template_context(self): - """ - :return: a dictionary with context variables for the javascript file associated with the context - """ - return {"label": self.label} - - def preprocess(self, x): - """ - Any preprocessing needed to be performed on function input. - """ - return x - - def postprocess(self, y): - """ - Any postprocessing needed to be performed on function output. - """ - return y - - def process_example(self, example): - """ - Proprocess example for UI - """ - return example - - @classmethod - def get_shortcut_implementations(cls): - """ - Return dictionary of shortcut implementations - """ - return {} - - def rebuild(self, dir, data): - """ - All interfaces should define a method that rebuilds the flagged input when it's passed back (i.e. rebuilds image from base64) - """ - return data - - @classmethod - def get_all_shortcut_implementations(cls): - shortcuts = {} - for sub_cls in cls.__subclasses__(): - for shortcut, parameters in sub_cls.get_shortcut_implementations().items(): - shortcuts[shortcut] = (sub_cls, parameters) - return shortcuts diff --git a/build/lib/gradio/inputs.py b/build/lib/gradio/inputs.py deleted file mode 100644 index 76f0e921cb..0000000000 --- a/build/lib/gradio/inputs.py +++ /dev/null @@ -1,603 +0,0 @@ -""" -This module defines various classes that can serve as the `input` to an interface. Each class must inherit from -`InputComponent`, and each class must define a path to its template. All of the subclasses of `InputComponent` are -automatically added to a registry, which allows them to be easily referenced in other parts of the code. -""" - -import datetime -import json -import os -import time -import warnings -from gradio.component import Component - -import base64 -import numpy as np -import PIL -import scipy.io.wavfile -from gradio import processing_utils, test_data -import pandas as pd -import math -import tempfile - - -class InputComponent(Component): - """ - Input Component. All input components subclass this. - """ - pass - - -class Textbox(InputComponent): - """ - Component creates a textbox for user to enter input. Provides a string (or number is `type` is "float") as an argument to the wrapped function. - Input type: str - """ - - def __init__(self, lines=1, placeholder=None, default=None, numeric=False, type="str", label=None): - """ - Parameters: - lines (int): number of line rows to provide in textarea. - placeholder (str): placeholder hint to provide behind textarea. - default (str): default text to provide in textarea. - numeric (bool): DEPRECATED. Whether the input should be parsed as a number instead of a string. - type (str): Type of value to be returned by component. "str" returns a string, "number" returns a float value. - label (str): component name in interface. - """ - self.lines = lines - self.placeholder = placeholder - self.default = default - if numeric: - warnings.warn("The 'numeric' parameter has been deprecated. Set parameter 'type' to 'number' instead.", DeprecationWarning) - self.type = "number" - else: - self.type = type - if default is None: - self.test_input = { - "str": "the quick brown fox jumped over the lazy dog", - "number": 786.92, - }[type] - else: - self.test_input = default - super().__init__(label) - - def get_template_context(self): - return { - "lines": self.lines, - "placeholder": self.placeholder, - "default": self.default, - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "text": {}, - "textbox": {"lines": 7}, - "number": {"type": "number"} - } - - def preprocess(self, x): - if self.type == "str": - return x - elif self.type == "number": - return float(x) - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'str', 'number'.") - - -class Slider(InputComponent): - """ - Component creates a slider that ranges from `minimum` to `maximum`. Provides a number as an argument to the wrapped function. - Input type: float - """ - - def __init__(self, minimum=0, maximum=100, step=None, default=None, label=None): - ''' - Parameters: - minimum (float): minimum value for slider. - maximum (float): maximum value for slider. - step (float): increment between slider values. - default (float): default value. - label (str): component name in interface. - ''' - self.minimum = minimum - self.maximum = maximum - if step is None: - difference = maximum - minimum - power = math.floor(math.log10(difference) - 1) - step = 10 ** power - self.step = step - self.default = minimum if default is None else default - self.test_input = self.default - super().__init__(label) - - def get_template_context(self): - return { - "minimum": self.minimum, - "maximum": self.maximum, - "step": self.step, - "default": self.default, - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "slider": {}, - } - - -class Checkbox(InputComponent): - """ - Component creates a checkbox that can be set to `True` or `False`. Provides a boolean as an argument to the wrapped function. - Input type: bool - """ - - def __init__(self, label=None): - """ - Parameters: - label (str): component name in interface. - """ - self.test_input = True - super().__init__(label) - - @classmethod - def get_shortcut_implementations(cls): - return { - "checkbox": {}, - } - - -class CheckboxGroup(InputComponent): - """ - Component creates a set of checkboxes of which a subset can be selected. Provides a list of strings representing the selected choices as an argument to the wrapped function. - Input type: Union[List[str], List[int]] - """ - - def __init__(self, choices, type="value", label=None): - ''' - Parameters: - choices (List[str]): list of options to select from. - type (str): Type of value to be returned by component. "value" returns the list of strings of the choices selected, "index" returns the list of indicies of the choices selected. - label (str): component name in interface. - ''' - self.choices = choices - self.type = type - self.test_input = self.choices - super().__init__(label) - - def get_template_context(self): - return { - "choices": self.choices, - **super().get_template_context() - } - - def preprocess(self, x): - if self.type == "value": - return x - elif self.type == "index": - return [self.choices.index(choice) for choice in x] - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") - - -class Radio(InputComponent): - """ - Component creates a set of radio buttons of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. - Input type: Union[str, int] - """ - - def __init__(self, choices, type="value", label=None): - ''' - Parameters: - choices (List[str]): list of options to select from. - type (str): Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. - label (str): component name in interface. - ''' - self.choices = choices - self.type = type - self.test_input = self.choices[0] - super().__init__(label) - - def get_template_context(self): - return { - "choices": self.choices, - **super().get_template_context() - } - - def preprocess(self, x): - if self.type == "value": - return x - elif self.type == "index": - return self.choices.index(x) - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") - - -class Dropdown(InputComponent): - """ - Component creates a dropdown of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. - Input type: Union[str, int] - """ - - def __init__(self, choices, type="value", label=None): - ''' - Parameters: - choices (List[str]): list of options to select from. - type (str): Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. - label (str): component name in interface. - ''' - self.choices = choices - self.type = type - self.test_input = self.choices[0] - super().__init__(label) - - def get_template_context(self): - return { - "choices": self.choices, - **super().get_template_context() - } - - def preprocess(self, x): - if self.type == "value": - return x - elif self.type == "index": - return self.choices.index(x) - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") - - -class Image(InputComponent): - """ - Component creates an image upload box with editing capabilities. - Input type: Union[numpy.array, PIL.Image, str] - """ - - def __init__(self, shape=None, image_mode='RGB', invert_colors=False, source="upload", tool="editor", type="numpy", label=None): - ''' - Parameters: - shape (Tuple[int, int]): shape to crop and resize image to; if None, matches input image size. - image_mode (str): "RGB" if color, or "L" if black and white. - invert_colors (bool): whether to invert the image as a preprocessing step. - source (str): Source of image. "upload" creates a box where user can drop an image file, "webcam" allows user to take snapshot from their webcam, "canvas" defaults to a white image that can be edited and drawn upon with tools. - tool (str): Tools used for editing. "editor" allows a full screen editor, "select" provides a cropping and zoom tool. - type (str): Type of value to be returned by component. "numpy" returns a numpy array with shape (width, height, 3) and values from 0 to 255, "pil" returns a PIL image object, "file" returns a temporary file object whose path can be retrieved by file_obj.name. - label (str): component name in interface. - ''' - self.shape = shape - self.image_mode = image_mode - self.source = source - self.tool = tool - self.type = type - self.invert_colors = invert_colors - self.test_input = test_data.BASE64_IMAGE - super().__init__(label) - - @classmethod - def get_shortcut_implementations(cls): - return { - "image": {}, - "webcam": {"source": "webcam"}, - "sketchpad": {"image_mode": "L", "source": "canvas", "shape": (28, 28), "invert_colors": True}, - } - - def get_template_context(self): - return { - "image_mode": self.image_mode, - "source": self.source, - "tool": self.tool, - **super().get_template_context() - } - - def preprocess(self, x): - im = processing_utils.decode_base64_to_image(x) - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - im = im.convert(self.image_mode) - if self.shape is not None: - im = processing_utils.resize_and_crop( - im, (self.shape[0], self.shape[1])) - if self.invert_colors: - im = PIL.ImageOps.invert(im) - if self.type == "pil": - return im - elif self.type == "numpy": - return np.array(im) - elif self.type == "file": - file_obj = tempfile.NamedTemporaryFile() - im.save(file_obj.name) - return file_obj - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'pil', 'file'.") - - def process_example(self, example): - if os.path.exists(example): - return processing_utils.encode_file_to_base64(example) - else: - return example - - def rebuild(self, dir, data): - """ - Default rebuild method to decode a base64 image - """ - im = processing_utils.decode_base64_to_image(data) - timestamp = datetime.datetime.now() - filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.png' - im.save(f'{dir}/{filename}', 'PNG') - return filename - - -class Audio(InputComponent): - """ - Component accepts audio input files. - Input type: Union[Tuple[int, numpy.array], str, numpy.array] - """ - - def __init__(self, source="upload", type="numpy", label=None): - """ - Parameters: - source (str): Source of audio. "upload" creates a box where user can drop an audio file, "microphone" creates a microphone input. - type (str): Type of value to be returned by component. "numpy" returns a 2-set tuple with an integer sample_rate and the data numpy.array of shape (samples, 2), "file" returns a temporary file object whose path can be retrieved by file_obj.name, "mfcc" returns the mfcc coefficients of the input audio. - label (str): component name in interface. - """ - self.source = source - self.type = type - self.test_input = test_data.BASE64_AUDIO - super().__init__(label) - - def get_template_context(self): - return { - "source": self.source, - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "audio": {}, - "microphone": {"source": "microphone"} - } - - def preprocess(self, x): - """ - By default, no pre-processing is applied to a microphone input file - """ - file_obj = processing_utils.decode_base64_to_file(x) - if self.type == "file": - return file_obj - elif self.type == "numpy": - return scipy.io.wavfile.read(file_obj.name) - elif self.type == "mfcc": - return processing_utils.generate_mfcc_features_from_audio_file(file_obj.name) - - -class File(InputComponent): - """ - Component accepts generic file uploads. - Input type: Union[str, bytes] - """ - - def __init__(self, type="file", label=None): - ''' - Parameters: - type (str): Type of value to be returned by component. "file" returns a temporary file object whose path can be retrieved by file_obj.name, "binary" returns an bytes object. - label (str): component name in interface. - ''' - self.type = type - self.test_input = None - super().__init__(label) - - @classmethod - def get_shortcut_implementations(cls): - return { - "file": {}, - } - - def preprocess(self, x): - if self.type == "file": - return processing_utils.decode_base64_to_file(x) - elif self.type == "bytes": - return processing_utils.decode_base64_to_binary(x) - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'file', 'bytes'.") - - -class Dataframe(InputComponent): - """ - Component accepts 2D input through a spreadsheet interface. - Input type: Union[pandas.DataFrame, numpy.array, List[Union[str, float]], List[List[Union[str, float]]]] - """ - - def __init__(self, headers=None, row_count=3, col_count=3, datatype="str", type="pandas", label=None): - """ - Parameters: - headers (List[str]): Header names to dataframe. - row_count (int): Limit number of rows for input. - col_count (int): Limit number of columns for input. If equal to 1, return data will be one-dimensional. Ignored if `headers` is provided. - datatype (Union[str, List[str]]): Datatype of values in sheet. Can be provided per column as a list of strings, or for the entire sheet as a single string. Valid datatypes are "str", "number", "bool", and "date". - type (str): Type of value to be returned by component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for a Python array. - label (str): component name in interface. - """ - self.headers = headers - self.datatype = datatype - self.row_count = row_count - self.col_count = len(headers) if headers else col_count - self.type = type - sample_values = {"str": "abc", "number": 786, "bool": True, "date": "02/08/1993"} - column_dtypes = [datatype]*self.col_count if isinstance(datatype, str) else datatype - self.test_input = [[sample_values[c] for c in column_dtypes] for _ in range(row_count)] - - super().__init__(label) - - def get_template_context(self): - return { - "headers": self.headers, - "datatype": self.datatype, - "row_count": self.row_count, - "col_count": self.col_count, - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "dataframe": {"type": "pandas"}, - "numpy": {"type": "numpy"}, - "matrix": {"type": "array"}, - "list": {"type": "array", "col_count": 1}, - } - - def preprocess(self, x): - if self.type == "pandas": - if self.headers: - return pd.DataFrame(x, columns=self.headers) - else: - return pd.DataFrame(x) - if self.col_count == 1: - x = x[0] - if self.type == "numpy": - return np.array(x) - elif self.type == "array": - return x - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'pandas', 'numpy', 'array'.") - -####################### -# DEPRECATED COMPONENTS -####################### - -class Sketchpad(InputComponent): - """ - DEPRECATED. Component creates a sketchpad for black and white illustration. Provides numpy array of shape `(width, height)` as an argument to the wrapped function. - Input type: numpy.array - """ - - def __init__(self, shape=(28, 28), invert_colors=True, - flatten=False, label=None): - ''' - Parameters: - shape (Tuple[int, int]): shape to crop and resize image to. - invert_colors (bool): whether to represent black as 1 and white as 0 in the numpy array. - flatten (bool): whether to reshape the numpy array to a single dimension. - label (str): component name in interface. - ''' - warnings.warn("Sketchpad has been deprecated. Please use 'Image' component to generate a sketchpad. The string shorcut 'sketchpad' has been moved to the Image component.", DeprecationWarning) - self.image_width = shape[0] - self.image_height = shape[1] - self.invert_colors = invert_colors - self.flatten = flatten - super().__init__(label) - - def preprocess(self, x): - """ - Default preprocessing method for the SketchPad is to convert the sketch to black and white and resize 28x28 - """ - im_transparent = processing_utils.decode_base64_to_image(x) - # Create a white background for the alpha channel - im = PIL.Image.new("RGBA", im_transparent.size, "WHITE") - im.paste(im_transparent, (0, 0), im_transparent) - im = im.convert('L') - if self.invert_colors: - im = PIL.ImageOps.invert(im) - im = im.resize((self.image_width, self.image_height)) - if self.flatten: - array = np.array(im).flatten().reshape( - 1, self.image_width * self.image_height) - else: - array = np.array(im).flatten().reshape( - 1, self.image_width, self.image_height) - return array - - def process_example(self, example): - return processing_utils.encode_file_to_base64(example) - - def rebuild(self, dir, data): - """ - Default rebuild method to decode a base64 image - """ - im = processing_utils.decode_base64_to_image(data) - timestamp = datetime.datetime.now() - filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.png' - im.save(f'{dir}/{filename}', 'PNG') - return filename - - -class Webcam(InputComponent): - """ - DEPRECATED. Component creates a webcam for captured image input. Provides numpy array of shape `(width, height, 3)` as an argument to the wrapped function. - Input type: numpy.array - """ - - def __init__(self, shape=(224, 224), label=None): - ''' - Parameters: - shape (Tuple[int, int]): shape to crop and resize image to. - label (str): component name in interface. - ''' - warnings.warn("Webcam has been deprecated. Please use 'Image' component to generate a webcam. The string shorcut 'webcam' has been moved to the Image component.", DeprecationWarning) - self.image_width = shape[0] - self.image_height = shape[1] - self.num_channels = 3 - super().__init__(label) - - def preprocess(self, x): - """ - Default preprocessing method for is to convert the picture to black and white and resize to be 48x48 - """ - im = processing_utils.decode_base64_to_image(x) - im = im.convert('RGB') - im = processing_utils.resize_and_crop( - im, (self.image_width, self.image_height)) - return np.array(im) - - def rebuild(self, dir, data): - """ - Default rebuild method to decode a base64 image - """ - im = processing_utils.decode_base64_to_image(data) - timestamp = datetime.datetime.now() - filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.png' - im.save('{}/{}'.format(dir, filename), 'PNG') - return filename - - -class Microphone(InputComponent): - """ - DEPRECATED. Component creates a microphone element for audio inputs. - Input type: numpy.array - """ - - def __init__(self, preprocessing=None, label=None): - ''' - Parameters: - preprocessing (Union[str, Callable]): preprocessing to apply to input - label (str): component name in interface. - ''' - warnings.warn("Microphone has been deprecated. Please use 'Audio' component to generate a microphone. The string shorcut 'microphone' has been moved to the Audio component.", DeprecationWarning) - super().__init__(label) - if preprocessing is None or preprocessing == "mfcc": - self.preprocessing = preprocessing - else: - raise ValueError( - "unexpected value for preprocessing", preprocessing) - - def preprocess(self, x): - """ - By default, no pre-processing is applied to a microphone input file - """ - file_obj = processing_utils.decode_base64_to_file(x) - if self.preprocessing == "mfcc": - return processing_utils.generate_mfcc_features_from_audio_file(file_obj.name) - _, signal = scipy.io.wavfile.read(file_obj.name) - return signal - - - def rebuild(self, dir, data): - inp = data.split(';')[1].split(',')[1] - wav_obj = base64.b64decode(inp) - timestamp = datetime.datetime.now() - filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.wav' - with open("{}/{}".format(dir, filename), "wb+") as f: - f.write(wav_obj) - return filename diff --git a/build/lib/gradio/interface.py b/build/lib/gradio/interface.py deleted file mode 100644 index cc7b842933..0000000000 --- a/build/lib/gradio/interface.py +++ /dev/null @@ -1,418 +0,0 @@ -""" -This is the core file in the `gradio` package, and defines the Interface class, including methods for constructing the -interface using the input and output types. -""" - -import tempfile -import webbrowser - -from gradio.inputs import InputComponent -from gradio.outputs import OutputComponent -from gradio import networking, strings, utils -from distutils.version import StrictVersion -import pkg_resources -import requests -import random -import time -import inspect -from IPython import get_ipython -import sys -import weakref -import analytics -import os - -PKG_VERSION_URL = "https://gradio.app/api/pkg-version" -analytics.write_key = "uxIFddIEuuUcFLf9VgH2teTEtPlWdkNy" -analytics_url = 'https://api.gradio.app/' -try: - ip_address = requests.get('https://api.ipify.org').text -except requests.ConnectionError: - ip_address = "No internet connection" - - -class Interface: - """ - Interfaces are created with Gradio using the `gradio.Interface()` function. - """ - instances = weakref.WeakSet() - - @classmethod - def get_instances(cls): - """ - :return: list of all current instances. - """ - return list( - Interface.instances) - - def __init__(self, fn, inputs, outputs, verbose=False, examples=None, - live=False, show_input=True, show_output=True, - capture_session=False, title=None, description=None, - thumbnail=None, server_port=None, server_name=networking.LOCALHOST_NAME, - allow_screenshot=True, allow_flagging=True, - flagging_dir="flagged", analytics_enabled=True): - - """ - Parameters: - fn (Callable): the function to wrap an interface around. - inputs (Union[str, List[Union[str, InputComponent]]]): a single Gradio input component, or list of Gradio input components. Components can either be passed as instantiated objects, or referred to by their string shortcuts. The number of input components should match the number of parameters in fn. - outputs (Union[str, List[Union[str, OutputComponent]]]): a single Gradio output component, or list of Gradio output components. Components can either be passed as instantiated objects, or referred to by their string shortcuts. The number of output components should match the number of values returned by fn. - verbose (bool): whether to print detailed information during launch. - examples (List[List[Any]]): sample inputs for the function; if provided, appears below the UI components and can be used to populate the interface. Should be nested list, in which the outer list consists of samples and each inner list consists of an input corresponding to each input component. - live (bool): whether the interface should automatically reload on change. - capture_session (bool): if True, captures the default graph and session (needed for Tensorflow 1.x) - title (str): a title for the interface; if provided, appears above the input and output components. - description (str): a description for the interface; if provided, appears above the input and output components. - thumbnail (str): path to image or src to use as display picture for models listed in gradio.app/hub - allow_screenshot (bool): if False, users will not see a button to take a screenshot of the interface. - allow_flagging (bool): if False, users will not see a button to flag an input and output. - flagging_dir (str): what to name the dir where flagged data is stored. - """ - - def get_input_instance(iface): - if isinstance(iface, str): - shortcut = InputComponent.get_all_shortcut_implementations()[iface] - return shortcut[0](**shortcut[1]) - elif isinstance(iface, InputComponent): - return iface - else: - raise ValueError("Input interface must be of type `str` or " - "`InputComponent`") - - def get_output_instance(iface): - if isinstance(iface, str): - shortcut = OutputComponent.get_all_shortcut_implementations()[iface] - return shortcut[0](**shortcut[1]) - elif isinstance(iface, OutputComponent): - return iface - else: - raise ValueError( - "Output interface must be of type `str` or " - "`OutputComponent`" - ) - - if isinstance(inputs, list): - self.input_interfaces = [get_input_instance(i) for i in inputs] - else: - self.input_interfaces = [get_input_instance(inputs)] - if isinstance(outputs, list): - self.output_interfaces = [get_output_instance(i) for i in outputs] - else: - self.output_interfaces = [get_output_instance(outputs)] - if not isinstance(fn, list): - fn = [fn] - - self.output_interfaces *= len(fn) - self.predict = fn - self.verbose = verbose - self.status = "OFF" - self.live = live - self.show_input = show_input - self.show_output = show_output - self.flag_hash = random.getrandbits(32) - self.capture_session = capture_session - self.session = None - self.server_name = server_name - self.title = title - self.description = description - self.thumbnail = thumbnail - self.examples = examples - self.server_port = server_port - self.simple_server = None - self.allow_screenshot = allow_screenshot - self.allow_flagging = allow_flagging - self.flagging_dir = flagging_dir - Interface.instances.add(self) - self.analytics_enabled=analytics_enabled - - data = {'fn': fn, - 'inputs': inputs, - 'outputs': outputs, - 'live': live, - 'capture_session': capture_session, - 'ip_address': ip_address - } - - if self.capture_session: - try: - import tensorflow as tf - self.session = tf.get_default_graph(), \ - tf.keras.backend.get_session() - except (ImportError, AttributeError): - # If they are using TF >= 2.0 or don't have TF, - # just ignore this. - pass - - if self.allow_flagging: - if self.title is not None: - dir_name = "_".join(self.title.split(" ")) - else: - dir_name = "_".join([fn.__name__ for fn in self.predict]) - index = 1 - while os.path.exists(self.flagging_dir + "/" + dir_name + - "_{}".format(index)): - index += 1 - self.flagging_dir = self.flagging_dir + "/" + dir_name + \ - "_{}".format(index) - - if self.analytics_enabled: - try: - requests.post(analytics_url + 'gradio-initiated-analytics/', - data=data) - except requests.ConnectionError: - pass # do not push analytics if no network - - def get_config_file(self): - config = { - "input_interfaces": [ - (iface.__class__.__name__.lower(), iface.get_template_context()) - for iface in self.input_interfaces], - "output_interfaces": [ - (iface.__class__.__name__.lower(), iface.get_template_context()) - for iface in self.output_interfaces], - "function_count": len(self.predict), - "live": self.live, - "show_input": self.show_input, - "show_output": self.show_output, - "title": self.title, - "description": self.description, - "thumbnail": self.thumbnail, - "allow_screenshot": self.allow_screenshot, - "allow_flagging": self.allow_flagging - } - try: - param_names = inspect.getfullargspec(self.predict[0])[0] - for iface, param in zip(config["input_interfaces"], param_names): - if not iface[1]["label"]: - iface[1]["label"] = param.replace("_", " ") - for i, iface in enumerate(config["output_interfaces"]): - ret_name = "Output " + str(i + 1) if len(config["output_interfaces"]) > 1 else "Output" - if not iface[1]["label"]: - iface[1]["label"] = ret_name - except ValueError: - pass - - return config - - def process(self, raw_input, predict_fn=None): - """ - :param raw_input: a list of raw inputs to process and apply the - prediction(s) on. - :param predict_fn: which function to process. If not provided, all of the model functions are used. - :return: - processed output: a list of processed outputs to return as the - prediction(s). - duration: a list of time deltas measuring inference time for each - prediction fn. - """ - processed_input = [input_interface.preprocess(raw_input[i]) - for i, input_interface in enumerate(self.input_interfaces)] - predictions = [] - durations = [] - for predict_fn in self.predict: - start = time.time() - if self.capture_session and not (self.session is None): - graph, sess = self.session - with graph.as_default(): - with sess.as_default(): - prediction = predict_fn(*processed_input) - else: - try: - prediction = predict_fn(*processed_input) - except ValueError as exception: - if str(exception).endswith("is not an element of this " - "graph."): - raise ValueError("It looks like you might be using " - "tensorflow < 2.0. Please " - "pass capture_session=True in " - "Interface to avoid the 'Tensor is " - "not an element of this graph.' " - "error.") - else: - raise exception - duration = time.time() - start - - if len(self.output_interfaces) == len(self.predict): - prediction = [prediction] - durations.append(duration) - predictions.extend(prediction) - processed_output = [output_interface.postprocess( - predictions[i]) for i, output_interface in enumerate(self.output_interfaces)] - return processed_output, durations - - def close(self): - if self.simple_server and not (self.simple_server.fileno() == -1): # checks to see if server is running - print("Closing Gradio server on port {}...".format(self.server_port)) - networking.close_server(self.simple_server) - - def run_until_interrupted(self, thread, path_to_local_server): - try: - while 1: - pass - except (KeyboardInterrupt, OSError): - print("Keyboard interruption in main thread... closing server.") - thread.keep_running = False - networking.url_ok(path_to_local_server) - - def test_launch(self): - for predict_fn in self.predict: - print("Test launching: {}()...".format(predict_fn.__name__), end=' ') - - raw_input = [] - for input_interface in self.input_interfaces: - if input_interface.test_input is None: # If no test input is defined for that input interface - print("SKIPPED") - break - else: # If a test input is defined for each interface object - raw_input.append(input_interface.test_input) - else: - self.process(raw_input) - print("PASSED") - continue - - def launch(self, inline=None, inbrowser=None, share=False, debug=False): - """ - Parameters - inline (bool): whether to display in the interface inline on python notebooks. - inbrowser (bool): whether to automatically launch the interface in a new tab on the default browser. - share (bool): whether to create a publicly shareable link from your computer for the interface. - debug (bool): if True, and the interface was launched from Google Colab, prints the errors in the cell output. - Returns - httpd (str): HTTPServer object - path_to_local_server (str): Locally accessible link - share_url (str): Publicly accessible link (if share=True) - """ - output_directory = tempfile.mkdtemp() - # Set up a port to serve the directory containing the static files with interface. - server_port, httpd, thread = networking.start_simple_server( - self, output_directory, self.server_name, server_port=self.server_port) - path_to_local_server = "http://{}:{}/".format(self.server_name, server_port) - networking.build_template(output_directory) - - self.server_port = server_port - self.status = "RUNNING" - self.simple_server = httpd - - try: - current_pkg_version = pkg_resources.require("gradio")[0].version - latest_pkg_version = requests.get(url=PKG_VERSION_URL).json()["version"] - if StrictVersion(latest_pkg_version) > StrictVersion(current_pkg_version): - print("IMPORTANT: You are using gradio version {}, " - "however version {} " - "is available, please upgrade.".format( - current_pkg_version, latest_pkg_version)) - print('--------') - except: # TODO(abidlabs): don't catch all exceptions - pass - - is_colab = utils.colab_check() - if not is_colab: - if not networking.url_ok(path_to_local_server): - share = True - else: - print(strings.en["RUNNING_LOCALLY"].format(path_to_local_server)) - else: - if debug: - print("Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. " - "To turn off, set debug=False in launch().") - else: - print("Colab notebook detected. To show errors in colab notebook, set debug=True in launch()") - - if share: - print("This share link will expire in 6 hours. If you need a " - "permanent link, email support@gradio.app") - try: - share_url = networking.setup_tunnel(server_port) - print("Running on External URL:", share_url) - except RuntimeError: - data = {'error': 'RuntimeError in launch method'} - if self.analytics_enabled: - try: - requests.post(analytics_url + 'gradio-error-analytics/', - data=data) - except requests.ConnectionError: - pass # do not push analytics if no network - share_url = None - if self.verbose: - print(strings.en["NGROK_NO_INTERNET"]) - else: - if is_colab: # For a colab notebook, create a public link even if - # share is False. - share_url = networking.setup_tunnel(server_port) - print("Running on External URL:", share_url) - if self.verbose: - print(strings.en["COLAB_NO_LOCAL"]) - else: # If it's not a colab notebook and share=False, print a message telling them about the share option. - if self.verbose: - print(strings.en["PUBLIC_SHARE_TRUE"]) - share_url = None - - if inline is None: - inline = utils.ipython_check() - if inbrowser is None: - # if interface won't appear inline, open it in new tab, - # otherwise keep it inline - inbrowser = not inline - else: - if inbrowser is None: - inbrowser = False - - if inbrowser and not is_colab: - webbrowser.open(path_to_local_server) # Open a browser tab - # with the interface. - if inline: - from IPython.display import IFrame, display - if (is_colab): - # Embed the remote interface page if on google colab; - # otherwise, embed the local page. - print("Interface loading below...") - while not networking.url_ok(share_url): - time.sleep(1) - display(IFrame(share_url, width=1000, height=500)) - else: - display(IFrame(path_to_local_server, width=1000, height=500)) - - config = self.get_config_file() - config["share_url"] = share_url - - processed_examples = [] - if self.examples is not None: - for example_set in self.examples: - processed_set = [] - for iface, example in zip(self.input_interfaces, example_set): - processed_set.append(iface.process_example(example)) - processed_examples.append(processed_set) - config["examples"] = processed_examples - - networking.set_config(config, output_directory) - networking.set_meta_tags(output_directory, self.title, self.description, self.thumbnail) - - if debug: - while True: - sys.stdout.flush() - time.sleep(0.1) - - launch_method = 'browser' if inbrowser else 'inline' - data = {'launch_method': launch_method, - 'is_google_colab': is_colab, - 'is_sharing_on': share, - 'share_url': share_url, - 'ip_address': ip_address - } - - if self.analytics_enabled: - try: - requests.post(analytics_url + 'gradio-launched-analytics/', - data=data) - except requests.ConnectionError: - pass # do not push analytics if no network - - is_in_interactive_mode = bool(getattr(sys, 'ps1', sys.flags.interactive)) - if not is_in_interactive_mode: - self.run_until_interrupted(thread, path_to_local_server) - - return httpd, path_to_local_server, share_url - - -def reset_all(): - for io in Interface.get_instances(): - io.close() diff --git a/build/lib/gradio/networking.py b/build/lib/gradio/networking.py deleted file mode 100644 index ce749b97bb..0000000000 --- a/build/lib/gradio/networking.py +++ /dev/null @@ -1,265 +0,0 @@ -""" -Defines helper methods useful for setting up ports, launching servers, and handling `ngrok` -""" - -import os -import socket -import threading -from http.server import HTTPServer as BaseHTTPServer, SimpleHTTPRequestHandler -import pkg_resources -from distutils import dir_util -from gradio import inputs, outputs -import time -import json -from gradio.tunneling import create_tunnel -import urllib.request -from shutil import copyfile -import requests -import sys -import csv - - -INITIAL_PORT_VALUE = int(os.getenv( - 'GRADIO_SERVER_PORT', "7860")) # The http server will try to open on port 7860. If not available, 7861, 7862, etc. -TRY_NUM_PORTS = int(os.getenv( - 'GRADIO_NUM_PORTS', "100")) # Number of ports to try before giving up and throwing an exception. -LOCALHOST_NAME = os.getenv( - 'GRADIO_SERVER_NAME', "127.0.0.1") -GRADIO_API_SERVER = "https://api.gradio.app/v1/tunnel-request" - -STATIC_TEMPLATE_LIB = pkg_resources.resource_filename("gradio", "templates/") -STATIC_PATH_LIB = pkg_resources.resource_filename("gradio", "static/") -STATIC_PATH_TEMP = "static/" -TEMPLATE_TEMP = "index.html" -BASE_JS_FILE = "static/js/all_io.js" -CONFIG_FILE = "static/config.json" - -ASSOCIATION_PATH_IN_STATIC = "static/apple-app-site-association" -ASSOCIATION_PATH_IN_ROOT = "apple-app-site-association" - - -def build_template(temp_dir): - """ - Create HTML file with supporting JS and CSS files in a given directory. - :param temp_dir: string with path to temp directory in which the html file should be built - """ - dir_util.copy_tree(STATIC_TEMPLATE_LIB, temp_dir) - dir_util.copy_tree(STATIC_PATH_LIB, os.path.join( - temp_dir, STATIC_PATH_TEMP)) - - # Move association file to root of temporary directory. - copyfile(os.path.join(temp_dir, ASSOCIATION_PATH_IN_STATIC), - os.path.join(temp_dir, ASSOCIATION_PATH_IN_ROOT)) - - -def render_template_with_tags(template_path, context): - """ - Combines the given template with a given context dictionary by replacing all of the occurrences of tags (enclosed - in double curly braces) with corresponding values. - :param template_path: a string with the path to the template file - :param context: a dictionary whose string keys are the tags to replace and whose string values are the replacements. - """ - with open(template_path) as fin: - old_lines = fin.readlines() - new_lines = render_string_or_list_with_tags(old_lines, context) - with open(template_path, "w") as fout: - for line in new_lines: - fout.write(line) - - -def render_string_or_list_with_tags(old_lines, context): - # Handle string case - if isinstance(old_lines, str): - for key, value in context.items(): - old_lines = old_lines.replace(r"{{" + key + r"}}", str(value)) - return old_lines - - # Handle list case - new_lines = [] - for line in old_lines: - for key, value in context.items(): - line = line.replace(r"{{" + key + r"}}", str(value)) - new_lines.append(line) - return new_lines - - -def set_meta_tags(temp_dir, title, description, thumbnail): - title = "Gradio" if title is None else title - description = "Easy-to-use UI for your machine learning model" if description is None else description - thumbnail = "https://gradio.app/static/img/logo_only.png" if thumbnail is None else thumbnail - - index_file = os.path.join(temp_dir, TEMPLATE_TEMP) - render_template_with_tags(index_file, { - "title": title, - "description": description, - "thumbnail": thumbnail - }) - - -def set_config(config, temp_dir): - config_file = os.path.join(temp_dir, CONFIG_FILE) - with open(config_file, "w") as output: - json.dump(config, output) - - -def get_first_available_port(initial, final): - """ - Gets the first open port in a specified range of port numbers - :param initial: the initial value in the range of port numbers - :param final: final (exclusive) value in the range of port numbers, should be greater than `initial` - :return: - """ - for port in range(initial, final): - try: - s = socket.socket() # create a socket object - s.bind((LOCALHOST_NAME, port)) # Bind to the port - s.close() - return port - except OSError: - pass - raise OSError( - "All ports from {} to {} are in use. Please close a port.".format( - initial, final - ) - ) - - -def serve_files_in_background(interface, port, directory_to_serve=None, server_name=LOCALHOST_NAME): - class HTTPHandler(SimpleHTTPRequestHandler): - """This handler uses server.base_path instead of always using os.getcwd()""" - def _set_headers(self): - self.send_response(200) - self.send_header("Content-type", "application/json") - self.end_headers() - - def end_headers(self): - self.send_header('Access-Control-Allow-Origin', '*') - self.send_header('Access-Control-Allow-Methods', 'GET, POST') - return super(HTTPHandler, self).end_headers() - - def translate_path(self, path): - path = SimpleHTTPRequestHandler.translate_path(self, path) - relpath = os.path.relpath(path, os.getcwd()) - fullpath = os.path.join(self.server.base_path, relpath) - return fullpath - - def log_message(self, format, *args): - return - - def do_POST(self): - # Read body of the request. - if self.path == "/api/predict/": - # Make the prediction. - self._set_headers() - data_string = self.rfile.read( - int(self.headers["Content-Length"])) - msg = json.loads(data_string) - raw_input = msg["data"] - prediction, durations = interface.process(raw_input) - - output = {"data": prediction, "durations": durations} - self.wfile.write(json.dumps(output).encode()) - - elif self.path == "/api/flag/": - self._set_headers() - data_string = self.rfile.read( - int(self.headers["Content-Length"])) - msg = json.loads(data_string) - os.makedirs(interface.flagging_dir, exist_ok=True) - output = {'inputs': [interface.input_interfaces[ - i].rebuild( - interface.flagging_dir, msg['data']['input_data'][i]) for i - in range(len(interface.input_interfaces))], - 'outputs': [interface.output_interfaces[ - i].rebuild( - interface.flagging_dir, msg['data']['output_data'][i]) - for i - in range(len(interface.output_interfaces))]} - - log_fp = "{}/log.csv".format(interface.flagging_dir) - - is_new = not os.path.exists(log_fp) - - with open(log_fp, "a") as csvfile: - headers = ["input_{}".format(i) for i in range(len( - output["inputs"]))] + ["output_{}".format(i) for i in - range(len(output["outputs"]))] - writer = csv.DictWriter(csvfile, delimiter=',', - lineterminator='\n', - fieldnames=headers) - if is_new: - writer.writeheader() - - writer.writerow( - dict(zip(headers, output["inputs"] + - output["outputs"])) - ) - else: - self.send_error(404, 'Path not found: {}'.format(self.path)) - - class HTTPServer(BaseHTTPServer): - """The main server, you pass in base_path which is the path you want to serve requests from""" - - def __init__(self, base_path, server_address, RequestHandlerClass=HTTPHandler): - self.base_path = base_path - BaseHTTPServer.__init__(self, server_address, RequestHandlerClass) - - class QuittableHTTPThread(threading.Thread): - def __init__(self, httpd): - super().__init__(daemon=False) - self.httpd = httpd - self.keep_running =True - - def run(self): - while self.keep_running: - self.httpd.handle_request() - - httpd = HTTPServer(directory_to_serve, (server_name, port)) - thread = QuittableHTTPThread(httpd=httpd) - thread.start() - - return httpd, thread - - -def start_simple_server(interface, directory_to_serve=None, server_name=None, server_port=None): - if server_port is None: - server_port = INITIAL_PORT_VALUE - port = get_first_available_port( - server_port, server_port + TRY_NUM_PORTS - ) - httpd, thread = serve_files_in_background(interface, port, directory_to_serve, server_name) - return port, httpd, thread - - -def close_server(server): - server.server_close() - - -def url_request(url): - try: - req = urllib.request.Request( - url=url, headers={"content-type": "application/json"} - ) - res = urllib.request.urlopen(req, timeout=10) - return res - except Exception as e: - raise RuntimeError(str(e)) - - -def setup_tunnel(local_server_port): - response = url_request(GRADIO_API_SERVER) - if response and response.code == 200: - try: - payload = json.loads(response.read().decode("utf-8"))[0] - return create_tunnel(payload, LOCALHOST_NAME, local_server_port) - - except Exception as e: - raise RuntimeError(str(e)) - - -def url_ok(url): - try: - r = requests.head(url) - return r.status_code == 200 - except ConnectionError: - return False diff --git a/build/lib/gradio/outputs.py b/build/lib/gradio/outputs.py deleted file mode 100644 index c00cea639c..0000000000 --- a/build/lib/gradio/outputs.py +++ /dev/null @@ -1,388 +0,0 @@ -""" -This module defines various classes that can serve as the `output` to an interface. Each class must inherit from -`OutputComponent`, and each class must define a path to its template. All of the subclasses of `OutputComponent` are -automatically added to a registry, which allows them to be easily referenced in other parts of the code. -""" - -from gradio.component import Component -import numpy as np -import json -from gradio import processing_utils -import datetime -import operator -from numbers import Number -import warnings -import tempfile -import scipy -import os - -class OutputComponent(Component): - """ - Output Component. All output components subclass this. - """ - pass - -class Textbox(OutputComponent): - ''' - Component creates a textbox to render output text or number. - Output type: Union[str, float, int] - ''' - - def __init__(self, type="str", label=None): - ''' - Parameters: - type (str): Type of value to be passed to component. "str" expects a string, "number" expects a float value. - label (str): component name in interface. - ''' - self.type = type - super().__init__(label) - - def get_template_context(self): - return { - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "text": {"type": "str"}, - "textbox": {"type": "str"}, - "number": {"type": "number"}, - } - - def postprocess(self, y): - if self.type == "str": - return y - elif self.type == "number": - return str(y) - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'str', 'number'") - - -class Label(OutputComponent): - ''' - Component outputs a classification label, along with confidence scores of top categories if provided. Confidence scores are represented as a dictionary mapping labels to scores between 0 and 1. - Output type: Union[Dict[str, float], str, int, float] - ''' - - LABEL_KEY = "label" - CONFIDENCE_KEY = "confidence" - CONFIDENCES_KEY = "confidences" - - def __init__(self, num_top_classes=None, label=None): - ''' - Parameters: - num_top_classes (int): number of most confident classes to show. - label (str): component name in interface. - ''' - self.num_top_classes = num_top_classes - super().__init__(label) - - def postprocess(self, y): - if isinstance(y, str) or isinstance(y, Number): - return {"label": str(y)} - elif isinstance(y, dict): - sorted_pred = sorted( - y.items(), - key=operator.itemgetter(1), - reverse=True - ) - if self.num_top_classes is not None: - sorted_pred = sorted_pred[:self.num_top_classes] - return { - self.LABEL_KEY: sorted_pred[0][0], - self.CONFIDENCES_KEY: [ - { - self.LABEL_KEY: pred[0], - self.CONFIDENCE_KEY: pred[1] - } for pred in sorted_pred - ] - } - elif isinstance(y, int) or isinstance(y, float): - return {self.LABEL_KEY: str(y)} - else: - raise ValueError("The `Label` output interface expects one of: a string label, or an int label, a " - "float label, or a dictionary whose keys are labels and values are confidences.") - - @classmethod - def get_shortcut_implementations(cls): - return { - "label": {}, - } - - def rebuild(self, dir, data): - """ - Default rebuild method for label - """ - # return json.loads(data) - return data - -class Image(OutputComponent): - ''' - Component displays an output image. - Output type: Union[numpy.array, PIL.Image, str, matplotlib.pyplot] - ''' - - def __init__(self, type="numpy", plot=False, label=None): - ''' - Parameters: - type (str): Type of value to be passed to component. "numpy" expects a numpy array with shape (width, height, 3), "pil" expects a PIL image object, "file" expects a file path to the saved image, "plot" expects a matplotlib.pyplot object. - plot (bool): DEPRECATED. Whether to expect a plot to be returned by the function. - label (str): component name in interface. - ''' - if plot: - warnings.warn("The 'plot' parameter has been deprecated. Set parameter 'type' to 'plot' instead.", DeprecationWarning) - self.type = "plot" - else: - self.type = type - super().__init__(label) - - @classmethod - def get_shortcut_implementations(cls): - return { - "image": {}, - "plot": {"type": "plot"}, - "pil": {"type": "pil"} - } - - def postprocess(self, y): - if self.type in ["numpy", "pil"]: - if self.type == "pil": - y = np.array(y) - return processing_utils.encode_array_to_base64(y) - elif self.type == "file": - return processing_utils.encode_file_to_base64(y) - elif self.type == "plot": - return processing_utils.encode_plot_to_base64(y) - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'pil', 'file', 'plot'.") - - def rebuild(self, dir, data): - """ - Default rebuild method to decode a base64 image - """ - im = processing_utils.decode_base64_to_image(data) - timestamp = datetime.datetime.now() - filename = 'output_{}.png'.format(timestamp. - strftime("%Y-%m-%d-%H-%M-%S")) - im.save('{}/{}'.format(dir, filename), 'PNG') - return filename - -class KeyValues(OutputComponent): - ''' - Component displays a table representing values for multiple fields. - Output type: Union[Dict, List[Tuple[str, Union[str, int, float]]]] - ''' - - def __init__(self, label=None): - ''' - Parameters: - label (str): component name in interface. - ''' - super().__init__(label) - - def postprocess(self, y): - if isinstance(y, dict): - return list(y.items()) - elif isinstance(y, list): - return y - else: - raise ValueError("The `KeyValues` output interface expects an output that is a dictionary whose keys are " - "labels and values are corresponding values.") - - @classmethod - def get_shortcut_implementations(cls): - return { - "key_values": {}, - } - - -class HighlightedText(OutputComponent): - ''' - Component creates text that contains spans that are highlighted by category or numerical value. - Output is represent as a list of Tuple pairs, where the first element represents the span of text represented by the tuple, and the second element represents the category or value of the text. - Output type: List[Tuple[str, Union[float, str]]] - ''' - - def __init__(self, color_map=None, label=None): - ''' - Parameters: - color_map (Dict[str, str]): Map between category and respective colors - label (str): component name in interface. - ''' - self.color_map = color_map - super().__init__(label) - - def get_template_context(self): - return { - "color_map": self.color_map, - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "highlight": {}, - } - - def postprocess(self, y): - return y - - -class Audio(OutputComponent): - ''' - Creates an audio player that plays the output audio. - Output type: Union[Tuple[int, numpy.array], str] - ''' - - def __init__(self, type="numpy", label=None): - ''' - Parameters: - type (str): Type of value to be passed to component. "numpy" returns a 2-set tuple with an integer sample_rate and the data numpy.array of shape (samples, 2), "file" returns a temporary file path to the saved wav audio file. - label (str): component name in interface. - ''' - self.type = type - super().__init__(label) - - def get_template_context(self): - return { - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "audio": {}, - } - - def postprocess(self, y): - if self.type in ["numpy", "file"]: - if self.type == "numpy": - file = tempfile.NamedTemporaryFile() - scipy.io.wavfile.write(file, y[0], y[1]) - y = file.name - return processing_utils.encode_file_to_base64(y, type="audio", ext="wav") - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'file'.") - - -class JSON(OutputComponent): - ''' - Used for JSON output. Expects a JSON string or a Python object that is JSON serializable. - Output type: Union[str, Any] - ''' - - def __init__(self, label=None): - ''' - Parameters: - label (str): component name in interface. - ''' - super().__init__(label) - - def postprocess(self, y): - if isinstance(y, str): - return json.dumps(y) - else: - return y - - - @classmethod - def get_shortcut_implementations(cls): - return { - "json": {}, - } - - -class HTML(OutputComponent): - ''' - Used for HTML output. Expects an HTML valid string. - Output type: str - ''' - - def __init__(self, label=None): - ''' - Parameters: - label (str): component name in interface. - ''' - super().__init__(label) - - - @classmethod - def get_shortcut_implementations(cls): - return { - "html": {}, - } - - -class File(OutputComponent): - ''' - Used for file output. - Output type: Union[file-like, str] - ''' - - def __init__(self, label=None): - ''' - Parameters: - label (str): component name in interface. - ''' - super().__init__(label) - - - @classmethod - def get_shortcut_implementations(cls): - return { - "file": {}, - } - - def postprocess(self, y): - return { - "name": os.path.basename(y), - "size": os.path.getsize(y), - "data": processing_utils.encode_file_to_base64(y, header=False) - } - - -class Dataframe(OutputComponent): - """ - Component displays 2D output through a spreadsheet interface. - Output type: Union[pandas.DataFrame, numpy.array, List[Union[str, float]], List[List[Union[str, float]]]] - """ - - def __init__(self, headers=None, type="pandas", label=None): - ''' - Parameters: - headers (List[str]): Header names to dataframe. - type (str): Type of value to be passed to component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for Python array. - label (str): component name in interface. - ''' - self.type = type - self.headers = headers - super().__init__(label) - - - def get_template_context(self): - return { - "headers": self.headers, - **super().get_template_context() - } - - @classmethod - def get_shortcut_implementations(cls): - return { - "dataframe": {"type": "pandas"}, - "numpy": {"type": "numpy"}, - "matrix": {"type": "array"}, - "list": {"type": "array"}, - } - - def postprocess(self, y): - if self.type == "pandas": - return {"headers": list(y.columns), "data": y.values.tolist()} - elif self.type in ("numpy", "array"): - if self.type == "numpy": - y = y.tolist() - if len(y) == 0 or not isinstance(y[0], list): - y = [y] - return {"data": y} - else: - raise ValueError("Unknown type: " + self.type + ". Please choose from: 'pandas', 'numpy', 'array'.") diff --git a/build/lib/gradio/processing_utils.py b/build/lib/gradio/processing_utils.py deleted file mode 100644 index 6850c04aa3..0000000000 --- a/build/lib/gradio/processing_utils.py +++ /dev/null @@ -1,157 +0,0 @@ -from PIL import Image, ImageOps -from io import BytesIO -import base64 -import tempfile -import scipy.io.wavfile -from scipy.fftpack import dct -import numpy as np -import skimage - - -######################### -# IMAGE PRE-PROCESSING -######################### -def decode_base64_to_image(encoding): - content = encoding.split(';')[1] - image_encoded = content.split(',')[1] - return Image.open(BytesIO(base64.b64decode(image_encoded))) - - -def encode_file_to_base64(f, type="image", ext=None, header=True): - with open(f, "rb") as file: - encoded_string = base64.b64encode(file.read()) - base64_str = str(encoded_string, 'utf-8') - if not header: - return base64_str - if ext is None: - ext = f.split(".")[-1] - return "data:" + type + "/" + ext + ";base64," + base64_str - - -def encode_plot_to_base64(plt): - with BytesIO() as output_bytes: - plt.savefig(output_bytes, format="png") - bytes_data = output_bytes.getvalue() - plt.close() - base64_str = str(base64.b64encode(bytes_data), 'utf-8') - return "data:image/png;base64," + base64_str - -def encode_array_to_base64(image_array): - with BytesIO() as output_bytes: - PIL_image = Image.fromarray(skimage.img_as_ubyte(image_array)) - PIL_image.save(output_bytes, 'PNG') - bytes_data = output_bytes.getvalue() - base64_str = str(base64.b64encode(bytes_data), 'utf-8') - return "data:image/png;base64," + base64_str - - -def resize_and_crop(img, size, crop_type='center'): - """ - Resize and crop an image to fit the specified size. - args: - size: `(width, height)` tuple. - crop_type: can be 'top', 'middle' or 'bottom', depending on this - value, the image will cropped getting the 'top/left', 'middle' or - 'bottom/right' of the image to fit the size. - raises: - ValueError: if an invalid `crop_type` is provided. - """ - if crop_type == "top": - center = (0, 0) - elif crop_type == "center": - center = (0.5, 0.5) - else: - raise ValueError - return ImageOps.fit(img, size, centering=center) - -################## -# OUTPUT -################## - -def decode_base64_to_binary(encoding): - inp = encoding.split(';')[1].split(',')[1] - return base64.b64decode(inp) - - -def decode_base64_to_file(encoding): - file_obj = tempfile.NamedTemporaryFile() - file_obj.write(decode_base64_to_binary(encoding)) - return file_obj - - -################## -# AUDIO FILES -################## - -def generate_mfcc_features_from_audio_file(wav_filename, - pre_emphasis=0.95, - frame_size= 0.025, - frame_stride=0.01, - NFFT=512, - nfilt=40, - num_ceps=12, - cep_lifter=22): - """ - Loads and preprocesses a .wav audio file into mfcc coefficients, the typical inputs to models. - Adapted from: https://haythamfayek.com/2016/04/21/speech-processing-for-machine-learning.html - :param wav_filename: string name of audio file to process. - :param pre_emphasis: a float factor, typically 0.95 or 0.97, which amplifies high frequencies. - :param frame_size: a float that is the length, in seconds, of time frame over which to take the fft. - :param frame_stride: a float that is the offset, in seconds, between consecutive time frames. - :param NFFT: The number of points in the short-time fft for each time frame. - :param nfilt: The number of filters on the Mel-scale to extract frequency bands. - :param num_ceps: the number of cepstral coefficients to retrain. - :param cep_lifter: the int factor, by which to de-emphasize higher-frequency. - :return: a numpy array of mfcc coefficients. - """ - sample_rate, signal = scipy.io.wavfile.read(wav_filename) - emphasized_signal = np.append(signal[0], signal[1:] - pre_emphasis * signal[:-1]) - - frame_length, frame_step = frame_size * sample_rate, frame_stride * sample_rate # Convert from seconds to samples - signal_length = len(emphasized_signal) - frame_length = int(round(frame_length)) - frame_step = int(round(frame_step)) - num_frames = int(np.ceil(float(np.abs(signal_length - frame_length)) / frame_step)) # Make sure that we have at least 1 frame - - pad_signal_length = num_frames * frame_step + frame_length - z = np.zeros((pad_signal_length - signal_length)) - pad_signal = np.append(emphasized_signal, z) # Pad Signal to make sure that all frames have equal number of samples without truncating any samples from the original signal - - indices = np.tile(np.arange(0, frame_length), (num_frames, 1)) + np.tile(np.arange(0, num_frames * frame_step, frame_step), (frame_length, 1)).T - frames = pad_signal[indices.astype(np.int32, copy=False)] - - frames *= np.hamming(frame_length) - mag_frames = np.absolute(np.fft.rfft(frames, NFFT)) # Magnitude of the FFT - pow_frames = ((1.0 / NFFT) * ((mag_frames) ** 2)) # Power Spectrum - - low_freq_mel = 0 - high_freq_mel = (2595 * np.log10(1 + (sample_rate / 2) / 700)) # Convert Hz to Mel - mel_points = np.linspace(low_freq_mel, high_freq_mel, nfilt + 2) # Equally spaced in Mel scale - hz_points = (700 * (10**(mel_points / 2595) - 1)) # Convert Mel to Hz - bin = np.floor((NFFT + 1) * hz_points / sample_rate) - - fbank = np.zeros((nfilt, int(np.floor(NFFT / 2 + 1)))) - for m in range(1, nfilt + 1): - f_m_minus = int(bin[m - 1]) # left - f_m = int(bin[m]) # center - f_m_plus = int(bin[m + 1]) # right - - for k in range(f_m_minus, f_m): - fbank[m - 1, k] = (k - bin[m - 1]) / (bin[m] - bin[m - 1]) - for k in range(f_m, f_m_plus): - fbank[m - 1, k] = (bin[m + 1] - k) / (bin[m + 1] - bin[m]) - filter_banks = np.dot(pow_frames, fbank.T) - filter_banks = np.where(filter_banks == 0, np.finfo(float).eps, filter_banks) # Numerical Stability - filter_banks = 20 * np.log10(filter_banks) # dB - - mfcc = dct(filter_banks, type=2, axis=1, norm='ortho')[:, 0: (num_ceps + 1)] # Keep filters 1-13 by default. - (nframes, ncoeff) = mfcc.shape - n = np.arange(ncoeff) - lift = 1 + (cep_lifter / 2) * np.sin(np.pi * n / cep_lifter) - mfcc *= lift - - filter_banks -= (np.mean(filter_banks, axis=0) + 1e-8) - mfcc -= (np.mean(mfcc, axis=0) + 1e-8) - return mfcc[np.newaxis, :, :] # Create a batch dimension. - - diff --git a/build/lib/gradio/static/apple-app-site-association b/build/lib/gradio/static/apple-app-site-association deleted file mode 100644 index 36c39e3174..0000000000 --- a/build/lib/gradio/static/apple-app-site-association +++ /dev/null @@ -1,11 +0,0 @@ -{ - "applinks": { - "apps": [], - "details": [ - { - "appID": "RHW8FBGSTX.app.gradio.Gradio", - "paths": ["*"] - } - ] - } -} \ No newline at end of file diff --git a/build/lib/gradio/static/css/gradio.css b/build/lib/gradio/static/css/gradio.css deleted file mode 100644 index 0c8479bc13..0000000000 --- a/build/lib/gradio/static/css/gradio.css +++ /dev/null @@ -1,127 +0,0 @@ -.panels { - margin-top: -24px; - margin-left: -16px; -} -.panel { - margin-top: 24px; - margin-left: 16px; - min-width: 300px; - flex: 1 1 0; - display: flex; - flex-direction: column; - box-sizing: border-box; -} -.panel_header { - text-transform: uppercase; - color: black; - font-size: 14px; - font-weight: bold; - display: flex; - margin-bottom: 8px; -} -.input_interfaces, .output_interfaces { - margin-bottom: 16px; - background-color: whitesmoke; - border-radius: 4px; - padding: 12px; - flex-grow: 1; -} -.interface { - display: flex; - flex-flow: column; -} -.interface_box { - height: 360px; -} -.interface_mini_box { - height: 180px; -} -.interface_max_box { - overflow: auto; - max-height: 360px; -} -.interface:not(*:last-child) { - margin-bottom: 16px; -} -.output_panel { - position: relative; -} -.loading { - position: absolute; - top: 3px; - right: 3px; - margin-left: auto; - z-index: 1; -} -.loading img { - height: 20px; - display: none; -} -.panel_buttons { - display: flex; - margin-left: -16px; -} -input.submit { - display: none; -} -input.panel_button { - background-color: whitesmoke; - padding: 12px; - box-sizing: border-box; - font-weight: bold; - border: 0 none; - border-radius: 4px; - margin-left: 16px; - flex-grow: 1; -} -input.submit { - background-color: #e67e22; - color: white; -} -.panel_button:hover { - background-color: lightgray; -} -input.submit:hover { - background-color: #f39c12; -} -.flag { - visibility: hidden; -} -.flagged { - background-color: pink !important; -} -/* label:hover { - background-color: lightgray; -} */ -.overlay { - position: absolute; - height: 100vh; - width: 100vw; - position: fixed; - z-index: 1; - background-color: rgba(0, 0, 0, 0.7); - top: 0; - left: 0; -} -.loading { - justify-content: center; - align-items: center; -} - -.invisible { - display: none !important; -} -.screenshot { - visibility: hidden; -} -.screenshot_logo { - display: none; - flex-grow: 1; - text-align: center; - padding: 4px; - box-sizing: border-box; - margin-left: 16px; -} -.screenshot_logo img { - height: 38px; -} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/checkbox_group.css b/build/lib/gradio/static/css/interfaces/input/checkbox_group.css deleted file mode 100644 index 1df6d2f2ea..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/checkbox_group.css +++ /dev/null @@ -1,20 +0,0 @@ -.checkbox_group { - display: flex; - flex-wrap: wrap; - align-items: center; - font-size: 18px; - margin-top: -12px; - margin-left: -16px; -} -.checkbox_group input, .checkbox { - margin: 0px; -} -.checkbox_group label { - margin-top: 12px; - margin-left: 16px; -} -.checkbox_solo label { - width: 27px !important; - padding-left: 11px; - padding-right: 3px; -} diff --git a/build/lib/gradio/static/css/interfaces/input/dropdown.css b/build/lib/gradio/static/css/interfaces/input/dropdown.css deleted file mode 100644 index 821d494287..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/dropdown.css +++ /dev/null @@ -1,7 +0,0 @@ -select.dropdown { - padding: 4px; - font-size: 18px; - border: solid 1px lightgray; - border-radius: 2px; - outline: none; -} diff --git a/build/lib/gradio/static/css/interfaces/input/file.css b/build/lib/gradio/static/css/interfaces/input/file.css deleted file mode 100644 index cbfc03758d..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/file.css +++ /dev/null @@ -1,15 +0,0 @@ -.file_display { - height: 100%; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; -} -.file_name { - font-size: 24px; - font-weight: bold; - margin-bottom: 18px; -} -.file_size { - font-size: 18px; -} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/image.css b/build/lib/gradio/static/css/interfaces/input/image.css deleted file mode 100644 index e6fab55694..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/image.css +++ /dev/null @@ -1,104 +0,0 @@ -.hide { - display: none !important; -} -.image_display { - height: 100%; -} -.view_holders { - flex-grow: 1; - background-color: #CCCCCC; - position: relative; -} -.image_preview_holder, .saliency_holder { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; -} -.saliency_holder { - position: absolute; - top: 0; -} -.saliency { - display: flex; - flex-direction: column; - border: none; - opacity: 1; -} -.saliency > div { - display: flex; - flex-grow: 1; -} -.saliency > div > div { - flex-grow: 1; - background-color: #e67e22; -} -.image_preview { - width: 100%; - height: 100%; - object-fit: contain; -} -.hidden_upload { - display: none; -} -.image_editor_overlay { - display: flex; - justify-content: center; - align-items: center; -} -.image_editor_holder { - height: 85%; - width: 85%; -} -.image_editor { - background-color: black; -} -#tie-btn-reset, #tie-btn-delete, #tie-btn-delete-all { - display: none !important; -} -.tui-image-editor-icpartition { - background-color: transparent !important; -} -.tui_close { - border-radius: 0 !important; - border: none !important; - margin-left: 10px !important; - font-family: 'Open Sans', sans-serif !important; -} -.upload_zone { - font-weight: bold; - font-size: 24px; - color: #BBB; - cursor: pointer; - width: 100%; - height: 100%; - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - line-height: 1.5em; - flex-flow: column; -} -.upload_zone img { - height: 120px; -} -.drop_zone { - border: dashed 8px #DDD; -} -.edit_holder { - display: flex; - justify-content: flex-end; - position: relative; -} -.edit_image { - position: absolute; - z-index: 1; -} -.interface_button { - padding: 6px; - text-transform: uppercase; - font-weight: bold; - font-size: 14px; -} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/microphone.css b/build/lib/gradio/static/css/interfaces/input/microphone.css deleted file mode 100644 index 3f1a5b6b6a..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/microphone.css +++ /dev/null @@ -1,52 +0,0 @@ -.hidden { - display: none !important; -} -.recording.input_caption { - color: #C00000; -} -.volume_display { - width: 100%; - display: flex; -} -.volume { - flex-grow: 1; - display: flex; - align-items: center; -} -.volume_left { - justify-content: flex-end; -} -.volume_bar { - height: 12px; - background-color: #C00000; - transition: width 0.1s; -} -.volume_left .volume_bar { - border-radius: 4px 0 0 4px; -} -.volume_right .volume_bar { - border-radius: 0 4px 4px 0; -} -.player { - display: flex; - width: 100%; - height: 100%; - flex-flow: column; - align-items: center; - justify-content: center; -} -.waveform { - width: 100%; -} -.waveform > wave { - overflow: visible !important; -} -.waveform canvas { - border: none !important; -} -.playpause { - margin-top: 26px; - font-size: 20px; - padding: 4px; - border-radius: 2px; -} diff --git a/build/lib/gradio/static/css/interfaces/input/radio.css b/build/lib/gradio/static/css/interfaces/input/radio.css deleted file mode 100644 index 041e7007c3..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/radio.css +++ /dev/null @@ -1,15 +0,0 @@ -.radio_group { - display: flex; - flex-wrap: wrap; - align-items: center; - font-size: 18px; - margin-top: -12px; - margin-left: -16px; -} -.radio_group input { - margin: 0px; -} -.radio_group label { - margin-top: 12px; - margin-left: 16px; -} diff --git a/build/lib/gradio/static/css/interfaces/input/sketchpad.css b/build/lib/gradio/static/css/interfaces/input/sketchpad.css deleted file mode 100644 index 8753456eae..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/sketchpad.css +++ /dev/null @@ -1,53 +0,0 @@ -.hide { - display: none !important; -} -.sketch_tools { - flex: 0 1 auto; - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 16px; -} -.brush { - border-radius: 50%; - background-color: #AAA; - margin: 0px 20px; - cursor: pointer; -} -.brush.selected, .brush:hover { - background-color: black; -} -#brush_1 { - height: 8px; - width: 8px; -} -#brush_2 { - height: 16px; - width: 16px; -} -#brush_3 { - height: 24px; - width: 24px; -} -.view_holders { - flex-grow: 1; - background-color: #CCCCCC; - position: relative; -} -.canvas_holder canvas { - background-color: white; -} -.canvas_holder { - text-align: center; - width: 100%; - height: calc(100% - 36px); -} -.saliency_holder { - position: absolute; - top: 0; - opacity: 0.9; -} -.view_holders canvas { - background-color: white; - border: solid 1px black; -} diff --git a/build/lib/gradio/static/css/interfaces/input/slider.css b/build/lib/gradio/static/css/interfaces/input/slider.css deleted file mode 100644 index 70b3c4692b..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/slider.css +++ /dev/null @@ -1,15 +0,0 @@ -.slider_container .slider { - margin: 0 24px; -} -.slider_container .ui-slider-handle { - width: 3em !important; - height: 1.6em !important; - top: 50% !important; - margin-top: -.8em; - margin-left: -1.5em !important; - text-align: center; - line-height: 1.6em; - cursor: pointer !important; - font-weight: bold; - outline: none !important; -} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/textbox.css b/build/lib/gradio/static/css/interfaces/input/textbox.css deleted file mode 100644 index b5971b7473..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/textbox.css +++ /dev/null @@ -1,16 +0,0 @@ -.input_text { - resize: none; - width: 100%; - font-size: 18px; - outline: none; - height: 100%; - background-color: white; - border: solid 1px lightgray; - border-radius: 2px; - box-sizing: border-box; - padding: 4px; - font-family: monospace; -} -.input_text_saliency { - display: none; -} diff --git a/build/lib/gradio/static/css/interfaces/input/webcam.css b/build/lib/gradio/static/css/interfaces/input/webcam.css deleted file mode 100644 index 4154a52dea..0000000000 --- a/build/lib/gradio/static/css/interfaces/input/webcam.css +++ /dev/null @@ -1,20 +0,0 @@ -.webcam_box { - width: 100% !important; - flex-grow: 1; - background-color: #BBBBBB; - cursor: pointer; - display: flex; - justify-content: center; - align-items: center; -} -.webcam_box canvas { - border: none; -} -.take_photo { - font-weight: bold; - font-size: 14px; - padding: 10px 0; -} -.snapped { - display: none; -} diff --git a/build/lib/gradio/static/css/interfaces/output/audio.css b/build/lib/gradio/static/css/interfaces/output/audio.css deleted file mode 100644 index cfaddb7191..0000000000 --- a/build/lib/gradio/static/css/interfaces/output/audio.css +++ /dev/null @@ -1,15 +0,0 @@ -.output_text { - width: 100%; - font-size: 18px; - outline: none; - background-color: white; - border: solid 1px lightgray; - border-radius: 2px; - box-sizing: border-box; - padding: 4px; - min-height: 30px; - font-family: monospace; - white-space: pre-wrap; /* CSS3 */ - white-space: -moz-pre-wrap; /* Firefox */ - word-wrap: break-word; /* IE */ -} diff --git a/build/lib/gradio/static/css/interfaces/output/highlighted_text.css b/build/lib/gradio/static/css/interfaces/output/highlighted_text.css deleted file mode 100644 index d9d47566d0..0000000000 --- a/build/lib/gradio/static/css/interfaces/output/highlighted_text.css +++ /dev/null @@ -1,22 +0,0 @@ -.highlight_legend { - margin-bottom: 4px; -} -.color_legend { - font-family: monospace; - padding: 4px; - border-radius: 2px; - display: flex; - justify-content: space-between; - background: linear-gradient(90deg, rgba(58,241,255,1) 0%, rgba(58,241,255,0) 49%, rgba(230,126,34,0) 50%, rgba(230,126,34,1) 100%); - margin-bottom: 4px; -} -.category-label { - display: inline-flex; - margin-right: 8px; - margin-bottom: 4px; -} -.category-label div { - width: 24px; - margin-right: 4px; -} - diff --git a/build/lib/gradio/static/css/interfaces/output/html.css b/build/lib/gradio/static/css/interfaces/output/html.css deleted file mode 100644 index cfaddb7191..0000000000 --- a/build/lib/gradio/static/css/interfaces/output/html.css +++ /dev/null @@ -1,15 +0,0 @@ -.output_text { - width: 100%; - font-size: 18px; - outline: none; - background-color: white; - border: solid 1px lightgray; - border-radius: 2px; - box-sizing: border-box; - padding: 4px; - min-height: 30px; - font-family: monospace; - white-space: pre-wrap; /* CSS3 */ - white-space: -moz-pre-wrap; /* Firefox */ - word-wrap: break-word; /* IE */ -} diff --git a/build/lib/gradio/static/css/interfaces/output/image.css b/build/lib/gradio/static/css/interfaces/output/image.css deleted file mode 100644 index d303e9647f..0000000000 --- a/build/lib/gradio/static/css/interfaces/output/image.css +++ /dev/null @@ -1,13 +0,0 @@ -.output_image_holder { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; -} -.output_image { - width: 100%; - height: 100%; - object-fit: contain; - display: none; -} diff --git a/build/lib/gradio/static/css/interfaces/output/json.css b/build/lib/gradio/static/css/interfaces/output/json.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/build/lib/gradio/static/css/interfaces/output/key_values.css b/build/lib/gradio/static/css/interfaces/output/key_values.css deleted file mode 100644 index e20d3b92c7..0000000000 --- a/build/lib/gradio/static/css/interfaces/output/key_values.css +++ /dev/null @@ -1,13 +0,0 @@ -.key_values th { - text-align: left; -} -.key_values tr { - padding: 4px; -} -.key_values { - font-family: monospace; - font-size: 16px; -} -.key_values tbody tr:nth-child(odd) { - background-color: white; -} diff --git a/build/lib/gradio/static/css/interfaces/output/label.css b/build/lib/gradio/static/css/interfaces/output/label.css deleted file mode 100644 index 3e3952e621..0000000000 --- a/build/lib/gradio/static/css/interfaces/output/label.css +++ /dev/null @@ -1,48 +0,0 @@ -.confidence_intervals { - display: flex; - font-size: 20px; -} -.confidences { - flex-grow: 1; - display: flex; - flex-flow: column; - align-items: baseline; - font-family: monospace; -} -.confidence { - background-color: #888888; - color: white; - text-align: right; - display: flex; - align-items: center; - justify-content: flex-end; -} -.labels { - max-width: 120px; - margin-right: 4px; -} -.label, .confidence { - overflow: hidden; - white-space: nowrap; - height: 27px; - margin-bottom: 4px; - padding: 2px; -} -.label { - text-overflow: ellipsis; - text-align: right; -} -.confidence { - text-overflow: clip; - padding-left: 6px; - padding-right: 6px; -} -.output_class { - font-weight: bold; - font-size: 36px; - padding: 32px 16px;; - flex-grow: 1; - display: flex; - align-items: center; - justify-content: center; -} diff --git a/build/lib/gradio/static/css/interfaces/output/textbox.css b/build/lib/gradio/static/css/interfaces/output/textbox.css deleted file mode 100644 index cfaddb7191..0000000000 --- a/build/lib/gradio/static/css/interfaces/output/textbox.css +++ /dev/null @@ -1,15 +0,0 @@ -.output_text { - width: 100%; - font-size: 18px; - outline: none; - background-color: white; - border: solid 1px lightgray; - border-radius: 2px; - box-sizing: border-box; - padding: 4px; - min-height: 30px; - font-family: monospace; - white-space: pre-wrap; /* CSS3 */ - white-space: -moz-pre-wrap; /* Firefox */ - word-wrap: break-word; /* IE */ -} diff --git a/build/lib/gradio/static/css/loading.css b/build/lib/gradio/static/css/loading.css deleted file mode 100644 index ce3628d18a..0000000000 --- a/build/lib/gradio/static/css/loading.css +++ /dev/null @@ -1,6875 +0,0 @@ -.ld.reverse { - -webkit-animation-direction: reverse; - animation-direction: reverse; -} -.ld.xhalf { - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; -} -.ld.x1 { - -webkit-animation-duration: 1s; - animation-duration: 1s; -} -.ld.x2 { - -webkit-animation-duration: 2s; - animation-duration: 2s; -} -.ld.x4 { - -webkit-animation-duration: 4s; - animation-duration: 4s; -} -.ld.running { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.ld.paused { - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.ld.f00 { - -webkit-animation-delay: 0s; - animation-delay: 0s; -} -.ld.f01 { - -webkit-animation-delay: -0.1s; - animation-delay: -0.1s; -} -.ld.f02 { - -webkit-animation-delay: -0.2s; - animation-delay: -0.2s; -} -.ld.f03 { - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -.ld.f04 { - -webkit-animation-delay: -0.4s; - animation-delay: -0.4s; -} -.ld.f05 { - -webkit-animation-delay: -0.5s; - animation-delay: -0.5s; -} -.ld.f06 { - -webkit-animation-delay: -0.6s; - animation-delay: -0.6s; -} -.ld.f07 { - -webkit-animation-delay: -0.7s; - animation-delay: -0.7s; -} -.ld.f08 { - -webkit-animation-delay: -0.8s; - animation-delay: -0.8s; -} -.ld.f09 { - -webkit-animation-delay: -0.9s; - animation-delay: -0.9s; -} -.ld.f10 { - -webkit-animation-delay: -1s; - animation-delay: -1s; -} -.ld-ball, -.ld-ring, -.ld-hourglass, -.ld-loader, -.ld-cross, -.ld-square, -.ld-pie, -.ld-spinner { - width: 1em; - height: 1em; - position: relative; - color: inherit; - display: inline-block; -/* - &:before - content: "â—Ž" - display: block - visibility: hidden - */ -} -.ld-ball:after, -.ld-ring:after, -.ld-hourglass:after, -.ld-loader:after, -.ld-cross:after, -.ld-square:after, -.ld-pie:after, -.ld-spinner:after { - position: absolute; - margin: auto; - width: 100%; - height: 100%; - top: 0; - left: 0; - right: 0; - bottom: 0; - content: " "; - display: inline-block; - background: center center no-repeat; - background-size: cover; -} -.ld-ball:after { - border-radius: 50%; - background: currentColor; -} -.ld-pie:after { - width: 0; - height: 0; - border-radius: 50%; - border-style: solid; - border-width: 0.5em; - -webkit-background-clip: padding-box; - border-color: currentColor currentColor currentColor transparent; -} -.ld-ring:after { - border-radius: 50%; - border-style: solid; - border-width: 0.15em; - -webkit-background-clip: padding-box; - border-color: currentColor currentColor currentColor transparent; - box-sizing: border-box; -} -.ld-hourglass:after { - width: 0; - height: 0; - background: none; - border-radius: 50%; - border-style: solid; - border-width: 0.5em; - border-color: currentColor transparent currentColor transparent; -} -.ld-cross:after { - width: 18%; - height: 18%; - background: currentColor; - box-shadow: 0 0.18em 0 1px currentColor, 0 -0.18em 0 1px currentColor, 0.18em 0 0 1px currentColor, -0.18em 0 0 1px currentColor, 0 0.36em 0 1px currentColor, 0 -0.36em 0 1px currentColor, 0.36em 0 0 1px currentColor, -0.36em 0 0 1px currentColor; -} -.ld-square:after { - width: 90%; - height: 90%; - background: currentColor; -} -.ld-spinner:after { - width: 20%; - height: 20%; - border-radius: 50%; - background: none; - box-shadow: 0 0.5em 0 0 currentColor,0 -.5em 0 0 currentColor,.5em 0 0 0 currentColor,-.5em 0 0 0 currentColor,.35355339059327373em .35355339059327373em 0 0 currentColor,-.35355339059327373em .35355339059327373em 0 0 currentColor,.35355339059327373em -.35355339059327373em 0 0 currentColor,-.35355339059327373em -.35355339059327373em 0 0 currentColor; -} -.ld-loader { - background-size: cover; -} -@keyframes ld-blink { - 0% { - opacity: 1; - } - 49% { - opacity: 1; - } - 50% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -@-webkit-keyframes ld-blink { - 0% { - opacity: 1; - } - 49% { - opacity: 1; - } - 50% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -.ld.ld-blink { - -webkit-animation: ld-blink 1s infinite linear; - animation: ld-blink 1s infinite linear; -} -@keyframes ld-blur { - 0% { - filter: blur(0); - } - 50% { - filter: blur(5px); - } - 100% { - filter: blur(0); - } -} -@-webkit-keyframes ld-blur { - 0% { - filter: blur(0); - } - 50% { - filter: blur(5px); - } - 100% { - filter: blur(0); - } -} -.ld.ld-blur { - -webkit-animation: ld-blur 1s infinite; - animation: ld-blur 1s infinite; -} -@keyframes ld-breath { - 0% { - -webkit-transform: scale(0.86); - transform: scale(0.86); - } - 50% { - -webkit-transform: scale(1.06); - transform: scale(1.06); - } - 100% { - -webkit-transform: scale(0.86); - transform: scale(0.86); - } -} -@-webkit-keyframes ld-breath { - 0% { - -webkit-transform: scale(0.86); - transform: scale(0.86); - } - 50% { - -webkit-transform: scale(1.06); - transform: scale(1.06); - } - 100% { - -webkit-transform: scale(0.86); - transform: scale(0.86); - } -} -.ld.ld-breath { - -webkit-animation: ld-breath 1s infinite; - animation: ld-breath 1s infinite; -} -@keyframes ld-broadcast { - 0% { - box-shadow: 0 0 0 3px rgba(0,0,0,0.9); - } - 19% { - box-shadow: 0 0 0 2px rgba(0,0,0,0.7); - } - 20% { - box-shadow: 0 0 0 6px rgba(0,0,0,0.8); - } - 39% { - box-shadow: 0 0 0 5px rgba(0,0,0,0.6); - } - 40% { - box-shadow: 0 0 0 9px rgba(0,0,0,0.7); - } - 60% { - box-shadow: 0 0 0 8px rgba(0,0,0,0.6); - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 100% { - box-shadow: 0 0 0 0px rgba(0,0,0,0.2); - } -} -@-webkit-keyframes ld-broadcast { - 0% { - box-shadow: 0 0 0 3px rgba(0,0,0,0.9); - } - 19% { - box-shadow: 0 0 0 2px rgba(0,0,0,0.7); - } - 20% { - box-shadow: 0 0 0 6px rgba(0,0,0,0.8); - } - 39% { - box-shadow: 0 0 0 5px rgba(0,0,0,0.6); - } - 40% { - box-shadow: 0 0 0 9px rgba(0,0,0,0.7); - } - 60% { - box-shadow: 0 0 0 8px rgba(0,0,0,0.6); - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 100% { - box-shadow: 0 0 0 0px rgba(0,0,0,0.2); - } -} -.ld.ld-broadcast { - -webkit-animation: ld-broadcast 1s infinite ease-out; - animation: ld-broadcast 1s infinite ease-out; - border-radius: 50%; -} -@keyframes ld-clock { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 8.333% { - -webkit-transform: rotate(30deg); - transform: rotate(30deg); - } - 16.667% { - -webkit-transform: rotate(60deg); - transform: rotate(60deg); - } - 25% { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - } - 33.333% { - -webkit-transform: rotate(120deg); - transform: rotate(120deg); - } - 41.667% { - -webkit-transform: rotate(150deg); - transform: rotate(150deg); - } - 50% { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - } - 58.333% { - -webkit-transform: rotate(210deg); - transform: rotate(210deg); - } - 66.667% { - -webkit-transform: rotate(240deg); - transform: rotate(240deg); - } - 75% { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); - } - 83.333% { - -webkit-transform: rotate(300deg); - transform: rotate(300deg); - } - 91.667% { - -webkit-transform: rotate(330deg); - transform: rotate(330deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@-webkit-keyframes ld-clock { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 8.333% { - -webkit-transform: rotate(30deg); - transform: rotate(30deg); - } - 16.667% { - -webkit-transform: rotate(60deg); - transform: rotate(60deg); - } - 25% { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - } - 33.333% { - -webkit-transform: rotate(120deg); - transform: rotate(120deg); - } - 41.667% { - -webkit-transform: rotate(150deg); - transform: rotate(150deg); - } - 50% { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - } - 58.333% { - -webkit-transform: rotate(210deg); - transform: rotate(210deg); - } - 66.667% { - -webkit-transform: rotate(240deg); - transform: rotate(240deg); - } - 75% { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); - } - 83.333% { - -webkit-transform: rotate(300deg); - transform: rotate(300deg); - } - 91.667% { - -webkit-transform: rotate(330deg); - transform: rotate(330deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -.ld.ld-clock { - -webkit-animation: ld-clock 9s infinite cubic-bezier(0, 0.7, 0.3, 1); - animation: ld-clock 9s infinite cubic-bezier(0, 0.7, 0.3, 1); -} -@keyframes ld-cycle { - 0%, 50%, 100% { - animation-timing-function: cubic-bezier(0.5, 0.5, 0.5, 0.5); - } - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - } - 50% { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@-webkit-keyframes ld-cycle { - 0%, 50%, 100% { - animation-timing-function: cubic-bezier(0.5, 0.5, 0.5, 0.5); - } - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - } - 50% { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -.ld.ld-cycle { - -webkit-animation: ld-cycle 1s infinite linear; - animation: ld-cycle 1s infinite linear; -} -@keyframes ld-fade { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} -@-webkit-keyframes ld-fade { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} -.ld.ld-fade { - -webkit-animation: ld-fade 1s infinite linear; - animation: ld-fade 1s infinite linear; -} -@keyframes ld-flip { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } - 25% { - -webkit-transform: rotateY(180deg) rotateX(0deg); - transform: rotateY(180deg) rotateX(0deg); - } - 50% { - -webkit-transform: rotateY(180deg) rotateX(180deg); - transform: rotateY(180deg) rotateX(180deg); - } - 75% { - -webkit-transform: rotateY(0deg) rotateX(180deg); - transform: rotateY(0deg) rotateX(180deg); - } - 100% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } -} -@-webkit-keyframes ld-flip { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } - 25% { - -webkit-transform: rotateY(180deg) rotateX(0deg); - transform: rotateY(180deg) rotateX(0deg); - } - 50% { - -webkit-transform: rotateY(180deg) rotateX(180deg); - transform: rotateY(180deg) rotateX(180deg); - } - 75% { - -webkit-transform: rotateY(0deg) rotateX(180deg); - transform: rotateY(0deg) rotateX(180deg); - } - 100% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } -} -.ld.ld-flip { - -webkit-animation: ld-flip 2s infinite; - animation: ld-flip 2s infinite; -} -@keyframes ld-flip-v { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateX(0deg) rotateY(0deg); - transform: rotateX(0deg) rotateY(0deg); - } - 50% { - -webkit-transform: rotateX(180deg) rotateY(0deg); - transform: rotateX(180deg) rotateY(0deg); - } - 100% { - -webkit-transform: rotateX(0deg) rotateY(0deg); - transform: rotateX(0deg) rotateY(0deg); - } -} -@-webkit-keyframes ld-flip-v { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateX(0deg) rotateY(0deg); - transform: rotateX(0deg) rotateY(0deg); - } - 50% { - -webkit-transform: rotateX(180deg) rotateY(0deg); - transform: rotateX(180deg) rotateY(0deg); - } - 100% { - -webkit-transform: rotateX(0deg) rotateY(0deg); - transform: rotateX(0deg) rotateY(0deg); - } -} -.ld.ld-flip-v { - -webkit-animation: ld-flip-v 1s infinite; - animation: ld-flip-v 1s infinite; -} -@keyframes ld-flip-h { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } - 50% { - -webkit-transform: rotateY(180deg) rotateX(0deg); - transform: rotateY(180deg) rotateX(0deg); - } - 100% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } -} -@-webkit-keyframes ld-flip-h { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } - 50% { - -webkit-transform: rotateY(180deg) rotateX(0deg); - transform: rotateY(180deg) rotateX(0deg); - } - 100% { - -webkit-transform: rotateY(0deg) rotateX(0deg); - transform: rotateY(0deg) rotateX(0deg); - } -} -.ld.ld-flip-h { - -webkit-animation: ld-flip-h 1s infinite; - animation: ld-flip-h 1s infinite; -} -@keyframes ld-coin-v { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateX(0deg); - transform: rotateX(0deg); - } - 50% { - -webkit-transform: rotateX(1800deg); - transform: rotateX(1800deg); - } - 100% { - -webkit-transform: rotateX(3600deg); - transform: rotateX(3600deg); - } -} -@-webkit-keyframes ld-coin-v { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateX(0deg); - transform: rotateX(0deg); - } - 50% { - -webkit-transform: rotateX(1800deg); - transform: rotateX(1800deg); - } - 100% { - -webkit-transform: rotateX(3600deg); - transform: rotateX(3600deg); - } -} -.ld.ld-coin-v { - -webkit-animation: ld-coin-v 2s infinite; - animation: ld-coin-v 2s infinite; -} -@keyframes ld-coin-h { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - } - 50% { - -webkit-transform: rotateY(1800deg); - transform: rotateY(1800deg); - } - 100% { - -webkit-transform: rotateY(3600deg); - transform: rotateY(3600deg); - } -} -@-webkit-keyframes ld-coin-h { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - } - 50% { - -webkit-transform: rotateY(1800deg); - transform: rotateY(1800deg); - } - 100% { - -webkit-transform: rotateY(3600deg); - transform: rotateY(3600deg); - } -} -.ld.ld-coin-h { - -webkit-animation: ld-coin-h 2s infinite; - animation: ld-coin-h 2s infinite; -} -@keyframes ld-heartbeat { - 0% { - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - 5% { - -webkit-transform: scale(1.25); - transform: scale(1.25); - } - 39% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } - 45% { - -webkit-transform: scale(1.15); - transform: scale(1.15); - } - 60% { - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@-webkit-keyframes ld-heartbeat { - 0% { - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - 5% { - -webkit-transform: scale(1.25); - transform: scale(1.25); - } - 39% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } - 45% { - -webkit-transform: scale(1.15); - transform: scale(1.15); - } - 60% { - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -.ld.ld-heartbeat { - -webkit-animation: ld-heartbeat 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); - animation: ld-heartbeat 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); -} -@keyframes ld-radio { - 0% { - animation-timing-function: cubic-bezier(0.3, 0.27, 0.13, 1); - } - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0; - } - 5% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } - 100% { - -webkit-transform: scale(1.5); - transform: scale(1.5); - opacity: 0; - } -} -@-webkit-keyframes ld-radio { - 0% { - animation-timing-function: cubic-bezier(0.3, 0.27, 0.13, 1); - } - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0; - } - 5% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } - 100% { - -webkit-transform: scale(1.5); - transform: scale(1.5); - opacity: 0; - } -} -.ld.ld-radio { - position: relative; - display: inline-block; - margin: 0; - padding: 0; -} -.ld.ld-radio:after { - -webkit-animation: ld-radio 1s infinite; - animation: ld-radio 1s infinite; - content: " "; - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 6px solid #000; - border-radius: 50%; - background: none; -} -.ld.ld-radio.square:after { - border-radius: 0; -} -@keyframes ld-rotate { - 0%, 33%, 66%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 16%, 50%, 83% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - } - 16% { - -webkit-transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); - transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); - } - 33% { - -webkit-transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); - transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); - } - 50% { - -webkit-transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); - transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); - } - 66% { - -webkit-transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); - transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); - } - 83% { - -webkit-transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); - transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); - } - 100% { - -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - } -} -@-webkit-keyframes ld-rotate { - 0%, 33%, 66%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 16%, 50%, 83% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - } - 16% { - -webkit-transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); - transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); - } - 33% { - -webkit-transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); - transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); - } - 50% { - -webkit-transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); - transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); - } - 66% { - -webkit-transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); - transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); - } - 83% { - -webkit-transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); - transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); - } - 100% { - -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); - } -} -.ld.ld-rotate { - -webkit-animation: ld-rotate 1s infinite; - animation: ld-rotate 1s infinite; -} -@keyframes ld-rubber { - 0% { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); - } - 20% { - -webkit-transform: scale(1.5, 1); - transform: scale(1.5, 1); - } - 30% { - -webkit-transform: scale(0.8, 1); - transform: scale(0.8, 1); - } - 40% { - -webkit-transform: scale(1.3, 1); - transform: scale(1.3, 1); - } - 50% { - -webkit-transform: scale(0.85, 1); - transform: scale(0.85, 1); - } - 60% { - -webkit-transform: scale(1.2, 1); - transform: scale(1.2, 1); - } - 70% { - -webkit-transform: scale(0.9, 1); - transform: scale(0.9, 1); - } - 80% { - -webkit-transform: scale(1.1, 1); - transform: scale(1.1, 1); - } - 90% { - -webkit-transform: scale(0.95, 1); - transform: scale(0.95, 1); - } - 100% { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); - } -} -@-webkit-keyframes ld-rubber { - 0% { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); - } - 20% { - -webkit-transform: scale(1.5, 1); - transform: scale(1.5, 1); - } - 30% { - -webkit-transform: scale(0.8, 1); - transform: scale(0.8, 1); - } - 40% { - -webkit-transform: scale(1.3, 1); - transform: scale(1.3, 1); - } - 50% { - -webkit-transform: scale(0.85, 1); - transform: scale(0.85, 1); - } - 60% { - -webkit-transform: scale(1.2, 1); - transform: scale(1.2, 1); - } - 70% { - -webkit-transform: scale(0.9, 1); - transform: scale(0.9, 1); - } - 80% { - -webkit-transform: scale(1.1, 1); - transform: scale(1.1, 1); - } - 90% { - -webkit-transform: scale(0.95, 1); - transform: scale(0.95, 1); - } - 100% { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); - } -} -.ld.ld-rubber { - -webkit-animation: ld-rubber 1s ease-out infinite; - animation: ld-rubber 1s ease-out infinite; -} -@keyframes ld-shadow { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); - } - 50% { - animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); - } - 0% { - box-shadow: 0 0 0 0 rgba(0,0,0,0.2); - } - 50% { - box-shadow: 0 0 0 10px rgba(0,0,0,0.9); - } - 100% { - box-shadow: 0 0 0 0 rgba(0,0,0,0.2); - } -} -@-webkit-keyframes ld-shadow { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); - } - 50% { - animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); - } - 0% { - box-shadow: 0 0 0 0 rgba(0,0,0,0.2); - } - 50% { - box-shadow: 0 0 0 10px rgba(0,0,0,0.9); - } - 100% { - box-shadow: 0 0 0 0 rgba(0,0,0,0.2); - } -} -.ld.ld-shadow { - -webkit-animation: ld-shadow 1s infinite; - animation: ld-shadow 1s infinite; - border-radius: 50%; -} -@keyframes ld-shadow-a { - 0% { - box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); - } - 8.33% { - box-shadow: 3px 1px 0 6px rgba(0,0,0,0.5); - } - 16.67% { - box-shadow: 2px 3px 0 6px rgba(0,0,0,0.5); - } - 25% { - box-shadow: 0px 3px 0 6px rgba(0,0,0,0.5); - } - 33.33% { - box-shadow: -1px 3px 0 6px rgba(0,0,0,0.5); - } - 41.67% { - box-shadow: -3px 1px 0 6px rgba(0,0,0,0.5); - } - 50% { - box-shadow: -3px 0px 0 6px rgba(0,0,0,0.5); - } - 58.33% { - box-shadow: -3px -1px 0 6px rgba(0,0,0,0.5); - } - 66.67% { - box-shadow: -2px -3px 0 6px rgba(0,0,0,0.5); - } - 75% { - box-shadow: 0px -3px 0 6px rgba(0,0,0,0.5); - } - 83.33% { - box-shadow: 2px -3px 0 6px rgba(0,0,0,0.5); - } - 91.67% { - box-shadow: 3px -2px 0 6px rgba(0,0,0,0.5); - } - 100% { - box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); - } -} -@-webkit-keyframes ld-shadow-a { - 0% { - box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); - } - 8.33% { - box-shadow: 3px 1px 0 6px rgba(0,0,0,0.5); - } - 16.67% { - box-shadow: 2px 3px 0 6px rgba(0,0,0,0.5); - } - 25% { - box-shadow: 0px 3px 0 6px rgba(0,0,0,0.5); - } - 33.33% { - box-shadow: -1px 3px 0 6px rgba(0,0,0,0.5); - } - 41.67% { - box-shadow: -3px 1px 0 6px rgba(0,0,0,0.5); - } - 50% { - box-shadow: -3px 0px 0 6px rgba(0,0,0,0.5); - } - 58.33% { - box-shadow: -3px -1px 0 6px rgba(0,0,0,0.5); - } - 66.67% { - box-shadow: -2px -3px 0 6px rgba(0,0,0,0.5); - } - 75% { - box-shadow: 0px -3px 0 6px rgba(0,0,0,0.5); - } - 83.33% { - box-shadow: 2px -3px 0 6px rgba(0,0,0,0.5); - } - 91.67% { - box-shadow: 3px -2px 0 6px rgba(0,0,0,0.5); - } - 100% { - box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); - } -} -.ld.ld-shadow-a { - -webkit-animation: ld-shadow-a 0.5s infinite; - animation: ld-shadow-a 0.5s infinite; - box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); - border-radius: 50%; -} -@keyframes ld-skew { - 0%, 50%, 100% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 25%, 75% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 0% { - -webkit-transform: skewX(20deg) scale(1); - transform: skewX(20deg) scale(1); - } - 25% { - -webkit-transform: skewX(0deg) scale(0.9); - transform: skewX(0deg) scale(0.9); - } - 50% { - -webkit-transform: skewX(-20deg) scale(1); - transform: skewX(-20deg) scale(1); - } - 75% { - -webkit-transform: skewX(0deg) scale(0.9); - transform: skewX(0deg) scale(0.9); - } - 100% { - -webkit-transform: skewX(20deg) scale(1); - transform: skewX(20deg) scale(1); - } -} -@-webkit-keyframes ld-skew { - 0%, 50%, 100% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 25%, 75% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 0% { - -webkit-transform: skewX(20deg) scale(1); - transform: skewX(20deg) scale(1); - } - 25% { - -webkit-transform: skewX(0deg) scale(0.9); - transform: skewX(0deg) scale(0.9); - } - 50% { - -webkit-transform: skewX(-20deg) scale(1); - transform: skewX(-20deg) scale(1); - } - 75% { - -webkit-transform: skewX(0deg) scale(0.9); - transform: skewX(0deg) scale(0.9); - } - 100% { - -webkit-transform: skewX(20deg) scale(1); - transform: skewX(20deg) scale(1); - } -} -.ld.ld-skew { - -webkit-animation: ld-skew 1s infinite; - animation: ld-skew 1s infinite; -} -@keyframes ld-spin { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - 50% { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@-webkit-keyframes ld-spin { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - 50% { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -.ld.ld-spin { - -webkit-animation: ld-spin 1s infinite; - animation: ld-spin 1s infinite; -} -@keyframes ld-spin-fast { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - 50% { - -webkit-transform: rotate(900deg); - transform: rotate(900deg); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - 100% { - -webkit-transform: rotate(1800deg); - transform: rotate(1800deg); - } -} -@-webkit-keyframes ld-spin-fast { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - 50% { - -webkit-transform: rotate(900deg); - transform: rotate(900deg); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - 100% { - -webkit-transform: rotate(1800deg); - transform: rotate(1800deg); - } -} -.ld.ld-spin-fast { - -webkit-animation: ld-spin-fast 1s infinite; - animation: ld-spin-fast 1s infinite; -} -@keyframes ld-squeeze { - 0% { - -webkit-transform: scale(1, 0.5); - transform: scale(1, 0.5); - } - 50% { - -webkit-transform: scale(0.5, 1); - transform: scale(0.5, 1); - } - 100% { - -webkit-transform: scale(1, 0.5); - transform: scale(1, 0.5); - } -} -@-webkit-keyframes ld-squeeze { - 0% { - -webkit-transform: scale(1, 0.5); - transform: scale(1, 0.5); - } - 50% { - -webkit-transform: scale(0.5, 1); - transform: scale(0.5, 1); - } - 100% { - -webkit-transform: scale(1, 0.5); - transform: scale(1, 0.5); - } -} -.ld.ld-squeeze { - -webkit-animation: ld-squeeze 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); - animation: ld-squeeze 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); -} -@keyframes ld-surprise { - 0% { - -webkit-transform: skewX(0deg) scale(1); - transform: skewX(0deg) scale(1); - } - 10% { - -webkit-transform: skewX(-15deg) scale(0.8); - transform: skewX(-15deg) scale(0.8); - } - 20% { - -webkit-transform: skewX(-15deg) scale(0.8); - transform: skewX(-15deg) scale(0.8); - } - 30% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 40% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } - 50% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 60% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } - 70% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 80% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } - 90% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 100% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } -} -@-webkit-keyframes ld-surprise { - 0% { - -webkit-transform: skewX(0deg) scale(1); - transform: skewX(0deg) scale(1); - } - 10% { - -webkit-transform: skewX(-15deg) scale(0.8); - transform: skewX(-15deg) scale(0.8); - } - 20% { - -webkit-transform: skewX(-15deg) scale(0.8); - transform: skewX(-15deg) scale(0.8); - } - 30% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 40% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } - 50% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 60% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } - 70% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 80% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } - 90% { - -webkit-transform: skewX(15deg) scale(1.3); - transform: skewX(15deg) scale(1.3); - } - 100% { - -webkit-transform: skewX(-15deg) scale(1.3); - transform: skewX(-15deg) scale(1.3); - } -} -.ld.ld-surprise { - -webkit-animation: ld-surprise 1s infinite linear; - animation: ld-surprise 1s infinite linear; -} -@keyframes ld-tick { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - } - 20% { - -webkit-transform: rotate(-30deg); - transform: rotate(-30deg); - } - 30% { - -webkit-transform: rotate(30deg); - transform: rotate(30deg); - } - 40% { - -webkit-transform: rotate(-21deg); - transform: rotate(-21deg); - } - 50% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - 60% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - 70% { - -webkit-transform: rotate(6deg); - transform: rotate(6deg); - } - 80% { - -webkit-transform: rotate(-2deg); - transform: rotate(-2deg); - } - 90% { - -webkit-transform: rotate(1deg); - transform: rotate(1deg); - } - 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} -@-webkit-keyframes ld-tick { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - } - 20% { - -webkit-transform: rotate(-30deg); - transform: rotate(-30deg); - } - 30% { - -webkit-transform: rotate(30deg); - transform: rotate(30deg); - } - 40% { - -webkit-transform: rotate(-21deg); - transform: rotate(-21deg); - } - 50% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - 60% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - 70% { - -webkit-transform: rotate(6deg); - transform: rotate(6deg); - } - 80% { - -webkit-transform: rotate(-2deg); - transform: rotate(-2deg); - } - 90% { - -webkit-transform: rotate(1deg); - transform: rotate(1deg); - } - 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} -.ld.ld-tick { - -webkit-animation: ld-tick 1s ease-out infinite; - animation: ld-tick 1s ease-out infinite; -} -@keyframes ld-vortex-in { - 0% { - -webkit-transform: rotate(1800deg) scale(3); - transform: rotate(1800deg) scale(3); - opacity: 0; - } - 60% { - -webkit-transform: rotate(0deg) scale(1); - transform: rotate(0deg) scale(1); - opacity: 1; - } - 100% { - opacity: 0; - } -} -@-webkit-keyframes ld-vortex-in { - 0% { - -webkit-transform: rotate(1800deg) scale(3); - transform: rotate(1800deg) scale(3); - opacity: 0; - } - 60% { - -webkit-transform: rotate(0deg) scale(1); - transform: rotate(0deg) scale(1); - opacity: 1; - } - 100% { - opacity: 0; - } -} -.ld.ld-vortex-in { - -webkit-animation: ld-vortex-in 2s infinite; - animation: ld-vortex-in 2s infinite; - animation-timing-function: cubic-bezier(0.3, 0, 1, 0.7); -} -@keyframes ld-vortex-out { - 0% { - -webkit-transform: rotate(0deg) scale(0); - transform: rotate(0deg) scale(0); - opacity: 1; - } - 60% { - -webkit-transform: rotate(1800deg) scale(1); - transform: rotate(1800deg) scale(1); - opacity: 1; - } - 100% { - -webkit-transform: rotate(1800deg) scale(1); - transform: rotate(1800deg) scale(1); - opacity: 0; - } -} -@-webkit-keyframes ld-vortex-out { - 0% { - -webkit-transform: rotate(0deg) scale(0); - transform: rotate(0deg) scale(0); - opacity: 1; - } - 60% { - -webkit-transform: rotate(1800deg) scale(1); - transform: rotate(1800deg) scale(1); - opacity: 1; - } - 100% { - -webkit-transform: rotate(1800deg) scale(1); - transform: rotate(1800deg) scale(1); - opacity: 0; - } -} -.ld.ld-vortex-out { - -webkit-animation: ld-vortex-out 2s infinite; - animation: ld-vortex-out 2s infinite; - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); -} -@keyframes ld-wrench { - 20%, 36%, 70%, 86% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 0%, 50%, 100% { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - } -} -@-webkit-keyframes ld-wrench { - 20%, 36%, 70%, 86% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 0%, 50%, 100% { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - } -} -.ld.ld-wrench { - -webkit-animation: ld-wrench 1s infinite; - animation: ld-wrench 1s infinite; -} -@keyframes ld-pulse { - 0% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - 50% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } - 51% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - 100% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } -} -@-webkit-keyframes ld-pulse { - 0% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - 50% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } - 51% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - 100% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } -} -.ld.ld-pulse { - -webkit-animation: ld-pulse 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); - animation: ld-pulse 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); -} -@keyframes ld-bounce { - 0%, 90% { - animation-timing-function: linear; - } - 10% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 50% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0%, 30%) scaleY(0.5); - transform: translate(0%, 30%) scaleY(0.5); - } - 10% { - -webkit-transform: translate(0%, 5%) scaleY(1.1); - transform: translate(0%, 5%) scaleY(1.1); - } - 50% { - -webkit-transform: translate(0%, -37%) scaleY(1.1); - transform: translate(0%, -37%) scaleY(1.1); - } - 90% { - -webkit-transform: translate(0%, 5%) scaleY(1.1); - transform: translate(0%, 5%) scaleY(1.1); - } - 100% { - -webkit-transform: translate(0%, 30%) scaleY(0.5); - transform: translate(0%, 30%) scaleY(0.5); - } -} -@-webkit-keyframes ld-bounce { - 0%, 90% { - animation-timing-function: linear; - } - 10% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 50% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0%, 30%) scaleY(0.5); - transform: translate(0%, 30%) scaleY(0.5); - } - 10% { - -webkit-transform: translate(0%, 5%) scaleY(1.1); - transform: translate(0%, 5%) scaleY(1.1); - } - 50% { - -webkit-transform: translate(0%, -37%) scaleY(1.1); - transform: translate(0%, -37%) scaleY(1.1); - } - 90% { - -webkit-transform: translate(0%, 5%) scaleY(1.1); - transform: translate(0%, 5%) scaleY(1.1); - } - 100% { - -webkit-transform: translate(0%, 30%) scaleY(0.5); - transform: translate(0%, 30%) scaleY(0.5); - } -} -.ld.ld-bounce { - -webkit-animation: ld-bounce 1s infinite; - animation: ld-bounce 1s infinite; -} -@keyframes ld-bounce-rtl { - 0% { - -webkit-transform: translate(160%, -40%); - transform: translate(160%, -40%); - } - 12.5% { - -webkit-transform: translate(120%, -23%); - transform: translate(120%, -23%); - } - 25% { - -webkit-transform: translate(80%, 0%); - transform: translate(80%, 0%); - } - 37.5% { - -webkit-transform: translate(50%, -23%); - transform: translate(50%, -23%); - } - 50% { - -webkit-transform: translate(0%, -40%); - transform: translate(0%, -40%); - } - 62.5% { - -webkit-transform: translate(-50%, -23%); - transform: translate(-50%, -23%); - } - 75% { - -webkit-transform: translate(-80%, 0%); - transform: translate(-80%, 0%); - } - 87.5% { - -webkit-transform: translate(-120%, -23%); - transform: translate(-120%, -23%); - } - 100% { - -webkit-transform: translate(-160%, -40%); - transform: translate(-160%, -40%); - } -} -@-webkit-keyframes ld-bounce-rtl { - 0% { - -webkit-transform: translate(160%, -40%); - transform: translate(160%, -40%); - } - 12.5% { - -webkit-transform: translate(120%, -23%); - transform: translate(120%, -23%); - } - 25% { - -webkit-transform: translate(80%, 0%); - transform: translate(80%, 0%); - } - 37.5% { - -webkit-transform: translate(50%, -23%); - transform: translate(50%, -23%); - } - 50% { - -webkit-transform: translate(0%, -40%); - transform: translate(0%, -40%); - } - 62.5% { - -webkit-transform: translate(-50%, -23%); - transform: translate(-50%, -23%); - } - 75% { - -webkit-transform: translate(-80%, 0%); - transform: translate(-80%, 0%); - } - 87.5% { - -webkit-transform: translate(-120%, -23%); - transform: translate(-120%, -23%); - } - 100% { - -webkit-transform: translate(-160%, -40%); - transform: translate(-160%, -40%); - } -} -.ld.ld-bounce-rtl { - -webkit-animation: ld-bounce-rtl 1s infinite linear; - animation: ld-bounce-rtl 1s infinite linear; -} -@keyframes ld-bounce-ltr { - 0% { - -webkit-transform: translate(-160%, -40%); - transform: translate(-160%, -40%); - } - 12.5% { - -webkit-transform: translate(-120%, -23%); - transform: translate(-120%, -23%); - } - 25% { - -webkit-transform: translate(-100%, 0%); - transform: translate(-100%, 0%); - } - 37.5% { - -webkit-transform: translate(-50%, -23%); - transform: translate(-50%, -23%); - } - 50% { - -webkit-transform: translate(0%, -40%); - transform: translate(0%, -40%); - } - 62.5% { - -webkit-transform: translate(50%, -23%); - transform: translate(50%, -23%); - } - 75% { - -webkit-transform: translate(100%, 0%); - transform: translate(100%, 0%); - } - 87.5% { - -webkit-transform: translate(120%, -23%); - transform: translate(120%, -23%); - } - 100% { - -webkit-transform: translate(160%, -40%); - transform: translate(160%, -40%); - } -} -@-webkit-keyframes ld-bounce-ltr { - 0% { - -webkit-transform: translate(-160%, -40%); - transform: translate(-160%, -40%); - } - 12.5% { - -webkit-transform: translate(-120%, -23%); - transform: translate(-120%, -23%); - } - 25% { - -webkit-transform: translate(-100%, 0%); - transform: translate(-100%, 0%); - } - 37.5% { - -webkit-transform: translate(-50%, -23%); - transform: translate(-50%, -23%); - } - 50% { - -webkit-transform: translate(0%, -40%); - transform: translate(0%, -40%); - } - 62.5% { - -webkit-transform: translate(50%, -23%); - transform: translate(50%, -23%); - } - 75% { - -webkit-transform: translate(100%, 0%); - transform: translate(100%, 0%); - } - 87.5% { - -webkit-transform: translate(120%, -23%); - transform: translate(120%, -23%); - } - 100% { - -webkit-transform: translate(160%, -40%); - transform: translate(160%, -40%); - } -} -.ld.ld-bounce-ltr { - -webkit-animation: ld-bounce-ltr 1s infinite linear; - animation: ld-bounce-ltr 1s infinite linear; -} -@keyframes ld-bounce-a-px { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 12.5%, 37.5%, 62.5%, 87.5% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } - 12.5% { - -webkit-transform: translate(5%, -28%); - transform: translate(5%, -28%); - } - 25% { - -webkit-transform: translate(10%, 0%); - transform: translate(10%, 0%); - } - 37.5% { - -webkit-transform: translate(5%, -28%); - transform: translate(5%, -28%); - } - 50% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } - 62.5% { - -webkit-transform: translate(-5%, -28%); - transform: translate(-5%, -28%); - } - 75% { - -webkit-transform: translate(-10%, 0%); - transform: translate(-10%, 0%); - } - 87.5% { - -webkit-transform: translate(-5%, -28%); - transform: translate(-5%, -28%); - } - 100% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } -} -@-webkit-keyframes ld-bounce-a-px { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 12.5%, 37.5%, 62.5%, 87.5% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } - 12.5% { - -webkit-transform: translate(5%, -28%); - transform: translate(5%, -28%); - } - 25% { - -webkit-transform: translate(10%, 0%); - transform: translate(10%, 0%); - } - 37.5% { - -webkit-transform: translate(5%, -28%); - transform: translate(5%, -28%); - } - 50% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } - 62.5% { - -webkit-transform: translate(-5%, -28%); - transform: translate(-5%, -28%); - } - 75% { - -webkit-transform: translate(-10%, 0%); - transform: translate(-10%, 0%); - } - 87.5% { - -webkit-transform: translate(-5%, -28%); - transform: translate(-5%, -28%); - } - 100% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } -} -.ld.ld-bounce-a-px { - -webkit-animation: ld-bounce-a-px 2s infinite; - animation: ld-bounce-a-px 2s infinite; -} -@keyframes ld-float { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: linear; - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } - 30% { - -webkit-transform: translate(0, -10%); - transform: translate(0, -10%); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 50% { - -webkit-transform: translate(0, -10%); - transform: translate(0, -10%); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } -} -@-webkit-keyframes ld-float { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: linear; - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } - 30% { - -webkit-transform: translate(0, -10%); - transform: translate(0, -10%); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 50% { - -webkit-transform: translate(0, -10%); - transform: translate(0, -10%); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } -} -.ld.ld-float { - -webkit-animation: ld-float 1s infinite; - animation: ld-float 1s infinite; -} -@keyframes ld-hit { - 0% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - -webkit-transform: scale(0) translate(0, 0) skewX(0); - transform: scale(0) translate(0, 0) skewX(0); - } - 20% { - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 50% { - animation-timing-function: cubic-bezier(1, 0, 1, 0.5); - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 100% { - -webkit-transform: scale(1) translate(0, 200%) skewX(20deg); - transform: scale(1) translate(0, 200%) skewX(20deg); - } -} -@-webkit-keyframes ld-hit { - 0% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - -webkit-transform: scale(0) translate(0, 0) skewX(0); - transform: scale(0) translate(0, 0) skewX(0); - } - 20% { - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 50% { - animation-timing-function: cubic-bezier(1, 0, 1, 0.5); - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 100% { - -webkit-transform: scale(1) translate(0, 200%) skewX(20deg); - transform: scale(1) translate(0, 200%) skewX(20deg); - } -} -.ld.ld-hit { - -webkit-animation: ld-hit 2s infinite; - animation: ld-hit 2s infinite; -} -@keyframes ld-jelly { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 16.6% { - -webkit-transform: translate(-30%, 0) skewX(30deg); - transform: translate(-30%, 0) skewX(30deg); - } - 33.3% { - -webkit-transform: translate(25%, 0) skewX(-20deg); - transform: translate(25%, 0) skewX(-20deg); - } - 50% { - -webkit-transform: translate(-12%, 0) skewX(10deg); - transform: translate(-12%, 0) skewX(10deg); - } - 66.6% { - -webkit-transform: translate(6%, 0) skewX(-5deg); - transform: translate(6%, 0) skewX(-5deg); - } - 83.3% { - -webkit-transform: translate(-2.5%, 0) skewX(2deg); - transform: translate(-2.5%, 0) skewX(2deg); - } - 100% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } -} -@-webkit-keyframes ld-jelly { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 16.6% { - -webkit-transform: translate(-30%, 0) skewX(30deg); - transform: translate(-30%, 0) skewX(30deg); - } - 33.3% { - -webkit-transform: translate(25%, 0) skewX(-20deg); - transform: translate(25%, 0) skewX(-20deg); - } - 50% { - -webkit-transform: translate(-12%, 0) skewX(10deg); - transform: translate(-12%, 0) skewX(10deg); - } - 66.6% { - -webkit-transform: translate(6%, 0) skewX(-5deg); - transform: translate(6%, 0) skewX(-5deg); - } - 83.3% { - -webkit-transform: translate(-2.5%, 0) skewX(2deg); - transform: translate(-2.5%, 0) skewX(2deg); - } - 100% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } -} -.ld.ld-jelly { - -webkit-animation: ld-jelly 1s infinite linear; - animation: ld-jelly 1s infinite linear; -} -@keyframes ld-jump { - 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { - animation-timing-function: ease-out; - } - 14%, 38%, 56%, 70%, 81%, 90%, 97% { - animation-timing-function: ease-in; - } - 0% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 14% { - -webkit-transform: translateY(-27%); - transform: translateY(-27%); - } - 28% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 38% { - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } - 48% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 56% { - -webkit-transform: translateY(-16%); - transform: translateY(-16%); - } - 64% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 70% { - -webkit-transform: translateY(-12%); - transform: translateY(-12%); - } - 76% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 81% { - -webkit-transform: translateY(-7.5%); - transform: translateY(-7.5%); - } - 86% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 90% { - -webkit-transform: translateY(-3%); - transform: translateY(-3%); - } - 93% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 97% { - -webkit-transform: translateY(-1.5%); - transform: translateY(-1.5%); - } - 100% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } -} -@-webkit-keyframes ld-jump { - 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { - animation-timing-function: ease-out; - } - 14%, 38%, 56%, 70%, 81%, 90%, 97% { - animation-timing-function: ease-in; - } - 0% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 14% { - -webkit-transform: translateY(-27%); - transform: translateY(-27%); - } - 28% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 38% { - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } - 48% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 56% { - -webkit-transform: translateY(-16%); - transform: translateY(-16%); - } - 64% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 70% { - -webkit-transform: translateY(-12%); - transform: translateY(-12%); - } - 76% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 81% { - -webkit-transform: translateY(-7.5%); - transform: translateY(-7.5%); - } - 86% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 90% { - -webkit-transform: translateY(-3%); - transform: translateY(-3%); - } - 93% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } - 97% { - -webkit-transform: translateY(-1.5%); - transform: translateY(-1.5%); - } - 100% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - } -} -.ld.ld-jump { - -webkit-animation: ld-jump 1.5s ease-in infinite; - animation: ld-jump 1.5s ease-in infinite; -} -@keyframes ld-orbit { - 0% { - -webkit-transform: translate(30%, 0%) rotate(0deg); - transform: translate(30%, 0%) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(21%, 21%) rotate(45deg); - transform: translate(21%, 21%) rotate(45deg); - } - 25% { - -webkit-transform: translate(0%, 30%) rotate(90deg); - transform: translate(0%, 30%) rotate(90deg); - } - 37.5% { - -webkit-transform: translate(-21%, 21%) rotate(135deg); - transform: translate(-21%, 21%) rotate(135deg); - } - 50% { - -webkit-transform: translate(-30%, 0%) rotate(180deg); - transform: translate(-30%, 0%) rotate(180deg); - } - 62.5% { - -webkit-transform: translate(-21%, -21%) rotate(225deg); - transform: translate(-21%, -21%) rotate(225deg); - } - 75% { - -webkit-transform: translate(0%, -30%) rotate(270deg); - transform: translate(0%, -30%) rotate(270deg); - } - 87.5% { - -webkit-transform: translate(21%, -21%) rotate(315deg); - transform: translate(21%, -21%) rotate(315deg); - } - 100% { - -webkit-transform: translate(30%, 0%) rotate(360deg); - transform: translate(30%, 0%) rotate(360deg); - } -} -@-webkit-keyframes ld-orbit { - 0% { - -webkit-transform: translate(30%, 0%) rotate(0deg); - transform: translate(30%, 0%) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(21%, 21%) rotate(45deg); - transform: translate(21%, 21%) rotate(45deg); - } - 25% { - -webkit-transform: translate(0%, 30%) rotate(90deg); - transform: translate(0%, 30%) rotate(90deg); - } - 37.5% { - -webkit-transform: translate(-21%, 21%) rotate(135deg); - transform: translate(-21%, 21%) rotate(135deg); - } - 50% { - -webkit-transform: translate(-30%, 0%) rotate(180deg); - transform: translate(-30%, 0%) rotate(180deg); - } - 62.5% { - -webkit-transform: translate(-21%, -21%) rotate(225deg); - transform: translate(-21%, -21%) rotate(225deg); - } - 75% { - -webkit-transform: translate(0%, -30%) rotate(270deg); - transform: translate(0%, -30%) rotate(270deg); - } - 87.5% { - -webkit-transform: translate(21%, -21%) rotate(315deg); - transform: translate(21%, -21%) rotate(315deg); - } - 100% { - -webkit-transform: translate(30%, 0%) rotate(360deg); - transform: translate(30%, 0%) rotate(360deg); - } -} -.ld.ld-orbit { - -webkit-animation: ld-orbit 1s infinite linear; - animation: ld-orbit 1s infinite linear; -} -@keyframes ld-rush-rtl { - 0% { - -webkit-transform: translate(200%, 0) skewX(-45deg); - transform: translate(200%, 0) skewX(-45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(-40%, 0) skewX(35deg); - transform: translate(-40%, 0) skewX(35deg); - } - 45% { - -webkit-transform: translate(20%, 0) skewX(-15deg); - transform: translate(20%, 0) skewX(-15deg); - } - 60% { - -webkit-transform: translate(-10%, 0) skewX(7deg); - transform: translate(-10%, 0) skewX(7deg); - } - 80% { - -webkit-transform: translate(0%, 0) skewX(0deg); - transform: translate(0%, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(-250%, 0) skewX(-45deg); - transform: translate(-250%, 0) skewX(-45deg); - } -} -@-webkit-keyframes ld-rush-rtl { - 0% { - -webkit-transform: translate(200%, 0) skewX(-45deg); - transform: translate(200%, 0) skewX(-45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(-40%, 0) skewX(35deg); - transform: translate(-40%, 0) skewX(35deg); - } - 45% { - -webkit-transform: translate(20%, 0) skewX(-15deg); - transform: translate(20%, 0) skewX(-15deg); - } - 60% { - -webkit-transform: translate(-10%, 0) skewX(7deg); - transform: translate(-10%, 0) skewX(7deg); - } - 80% { - -webkit-transform: translate(0%, 0) skewX(0deg); - transform: translate(0%, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(-250%, 0) skewX(-45deg); - transform: translate(-250%, 0) skewX(-45deg); - } -} -.ld.ld-rush-rtl { - -webkit-animation: ld-rush-rtl 1.5s infinite linear; - animation: ld-rush-rtl 1.5s infinite linear; -} -@keyframes ld-rush-ltr { - 0% { - -webkit-transform: translate(-200%, 0) skewX(45deg); - transform: translate(-200%, 0) skewX(45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(40%, 0) skewX(-35deg); - transform: translate(40%, 0) skewX(-35deg); - } - 45% { - -webkit-transform: translate(-20%, 0) skewX(15deg); - transform: translate(-20%, 0) skewX(15deg); - } - 60% { - -webkit-transform: translate(10%, 0) skewX(-7deg); - transform: translate(10%, 0) skewX(-7deg); - } - 80% { - -webkit-transform: translate(0%, 0) skewX(0deg); - transform: translate(0%, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(250%, 0) skewX(45deg); - transform: translate(250%, 0) skewX(45deg); - } -} -@-webkit-keyframes ld-rush-ltr { - 0% { - -webkit-transform: translate(-200%, 0) skewX(45deg); - transform: translate(-200%, 0) skewX(45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(40%, 0) skewX(-35deg); - transform: translate(40%, 0) skewX(-35deg); - } - 45% { - -webkit-transform: translate(-20%, 0) skewX(15deg); - transform: translate(-20%, 0) skewX(15deg); - } - 60% { - -webkit-transform: translate(10%, 0) skewX(-7deg); - transform: translate(10%, 0) skewX(-7deg); - } - 80% { - -webkit-transform: translate(0%, 0) skewX(0deg); - transform: translate(0%, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(250%, 0) skewX(45deg); - transform: translate(250%, 0) skewX(45deg); - } -} -.ld.ld-rush-ltr { - -webkit-animation: ld-rush-ltr 1.5s infinite linear; - animation: ld-rush-ltr 1.5s infinite linear; -} -@keyframes ld-shake { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 16.6% { - -webkit-transform: translate(-35%, 0); - transform: translate(-35%, 0); - } - 33.3% { - -webkit-transform: translate(25%, 0); - transform: translate(25%, 0); - } - 50% { - -webkit-transform: translate(-12%, 0); - transform: translate(-12%, 0); - } - 66.6% { - -webkit-transform: translate(6%, 0); - transform: translate(6%, 0); - } - 83.3% { - -webkit-transform: translate(-2.5%, 0); - transform: translate(-2.5%, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-shake { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 16.6% { - -webkit-transform: translate(-35%, 0); - transform: translate(-35%, 0); - } - 33.3% { - -webkit-transform: translate(25%, 0); - transform: translate(25%, 0); - } - 50% { - -webkit-transform: translate(-12%, 0); - transform: translate(-12%, 0); - } - 66.6% { - -webkit-transform: translate(6%, 0); - transform: translate(6%, 0); - } - 83.3% { - -webkit-transform: translate(-2.5%, 0); - transform: translate(-2.5%, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-shake { - -webkit-animation: ld-shake 1s infinite linear; - animation: ld-shake 1s infinite linear; -} -@keyframes ld-slide-ltr { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(200%, 0); - transform: translate(200%, 0); - } - 50% { - -webkit-transform: translate(-200%, 0); - transform: translate(-200%, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-ltr { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(200%, 0); - transform: translate(200%, 0); - } - 50% { - -webkit-transform: translate(-200%, 0); - transform: translate(-200%, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-ltr { - -webkit-animation: ld-slide-ltr 1s infinite; - animation: ld-slide-ltr 1s infinite; -} -@keyframes ld-slide-rtl { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(-200%, 0); - transform: translate(-200%, 0); - } - 50% { - -webkit-transform: translate(200%, 0); - transform: translate(200%, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-rtl { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(-200%, 0); - transform: translate(-200%, 0); - } - 50% { - -webkit-transform: translate(200%, 0); - transform: translate(200%, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-rtl { - -webkit-animation: ld-slide-rtl 1s infinite; - animation: ld-slide-rtl 1s infinite; -} -@keyframes ld-slide-btt { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, -200%); - transform: translate(0, -200%); - } - 50% { - -webkit-transform: translate(0, 200%); - transform: translate(0, 200%); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-btt { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, -200%); - transform: translate(0, -200%); - } - 50% { - -webkit-transform: translate(0, 200%); - transform: translate(0, 200%); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-btt { - -webkit-animation: ld-slide-btt 1s infinite; - animation: ld-slide-btt 1s infinite; -} -@keyframes ld-slide-ttb { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, 200%); - transform: translate(0, 200%); - } - 50% { - -webkit-transform: translate(0, -200%); - transform: translate(0, -200%); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-ttb { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, 200%); - transform: translate(0, 200%); - } - 50% { - -webkit-transform: translate(0, -200%); - transform: translate(0, -200%); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-ttb { - -webkit-animation: ld-slide-ttb 1s infinite; - animation: ld-slide-ttb 1s infinite; -} -@keyframes ld-tremble { - 0% { - -webkit-transform: translate(1%, 1%); - transform: translate(1%, 1%); - } - 5% { - -webkit-transform: translate(0%, 1%); - transform: translate(0%, 1%); - } - 10% { - -webkit-transform: translate(1%, 2%); - transform: translate(1%, 2%); - } - 15% { - -webkit-transform: translate(2%, 1%); - transform: translate(2%, 1%); - } - 20% { - -webkit-transform: translate(3%, 0%); - transform: translate(3%, 0%); - } - 25% { - -webkit-transform: translate(1%, 2%); - transform: translate(1%, 2%); - } - 30% { - -webkit-transform: translate(1%, 3%); - transform: translate(1%, 3%); - } - 35% { - -webkit-transform: translate(0%, 1%); - transform: translate(0%, 1%); - } - 40% { - -webkit-transform: translate(1%, 1%); - transform: translate(1%, 1%); - } - 45% { - -webkit-transform: translate(1%, 0%); - transform: translate(1%, 0%); - } - 50% { - -webkit-transform: translate(2%, 1%); - transform: translate(2%, 1%); - } - 55% { - -webkit-transform: translate(1%, 2%); - transform: translate(1%, 2%); - } - 60% { - -webkit-transform: translate(3%, 1%); - transform: translate(3%, 1%); - } - 65% { - -webkit-transform: translate(0%, 2%); - transform: translate(0%, 2%); - } - 70% { - -webkit-transform: translate(3%, 0%); - transform: translate(3%, 0%); - } - 75% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } - 80% { - -webkit-transform: translate(2%, 3%); - transform: translate(2%, 3%); - } - 85% { - -webkit-transform: translate(1%, 0%); - transform: translate(1%, 0%); - } - 90% { - -webkit-transform: translate(0%, 2%); - transform: translate(0%, 2%); - } - 95% { - -webkit-transform: translate(3%, 2%); - transform: translate(3%, 2%); - } -} -@-webkit-keyframes ld-tremble { - 0% { - -webkit-transform: translate(1%, 1%); - transform: translate(1%, 1%); - } - 5% { - -webkit-transform: translate(0%, 1%); - transform: translate(0%, 1%); - } - 10% { - -webkit-transform: translate(1%, 2%); - transform: translate(1%, 2%); - } - 15% { - -webkit-transform: translate(2%, 1%); - transform: translate(2%, 1%); - } - 20% { - -webkit-transform: translate(3%, 0%); - transform: translate(3%, 0%); - } - 25% { - -webkit-transform: translate(1%, 2%); - transform: translate(1%, 2%); - } - 30% { - -webkit-transform: translate(1%, 3%); - transform: translate(1%, 3%); - } - 35% { - -webkit-transform: translate(0%, 1%); - transform: translate(0%, 1%); - } - 40% { - -webkit-transform: translate(1%, 1%); - transform: translate(1%, 1%); - } - 45% { - -webkit-transform: translate(1%, 0%); - transform: translate(1%, 0%); - } - 50% { - -webkit-transform: translate(2%, 1%); - transform: translate(2%, 1%); - } - 55% { - -webkit-transform: translate(1%, 2%); - transform: translate(1%, 2%); - } - 60% { - -webkit-transform: translate(3%, 1%); - transform: translate(3%, 1%); - } - 65% { - -webkit-transform: translate(0%, 2%); - transform: translate(0%, 2%); - } - 70% { - -webkit-transform: translate(3%, 0%); - transform: translate(3%, 0%); - } - 75% { - -webkit-transform: translate(0%, 0%); - transform: translate(0%, 0%); - } - 80% { - -webkit-transform: translate(2%, 3%); - transform: translate(2%, 3%); - } - 85% { - -webkit-transform: translate(1%, 0%); - transform: translate(1%, 0%); - } - 90% { - -webkit-transform: translate(0%, 2%); - transform: translate(0%, 2%); - } - 95% { - -webkit-transform: translate(3%, 2%); - transform: translate(3%, 2%); - } -} -.ld.ld-tremble { - -webkit-animation: ld-tremble 1s infinite; - animation: ld-tremble 1s infinite; -} -@keyframes ld-wander-h { - 0% { - -webkit-transform: translate(-35%, 0); - transform: translate(-35%, 0); - } - 50% { - -webkit-transform: translate(35%, 0); - transform: translate(35%, 0); - } - 100% { - -webkit-transform: translate(-35%, 0); - transform: translate(-35%, 0); - } -} -@-webkit-keyframes ld-wander-h { - 0% { - -webkit-transform: translate(-35%, 0); - transform: translate(-35%, 0); - } - 50% { - -webkit-transform: translate(35%, 0); - transform: translate(35%, 0); - } - 100% { - -webkit-transform: translate(-35%, 0); - transform: translate(-35%, 0); - } -} -.ld.ld-wander-h { - -webkit-animation: ld-wander-h 1s infinite ease-out; - animation: ld-wander-h 1s infinite ease-out; -} -@keyframes ld-wander-v { - 0% { - -webkit-transform: translate(0, -35%); - transform: translate(0, -35%); - } - 50% { - -webkit-transform: translate(0, 35%); - transform: translate(0, 35%); - } - 100% { - -webkit-transform: translate(0, -35%); - transform: translate(0, -35%); - } -} -@-webkit-keyframes ld-wander-v { - 0% { - -webkit-transform: translate(0, -35%); - transform: translate(0, -35%); - } - 50% { - -webkit-transform: translate(0, 35%); - transform: translate(0, 35%); - } - 100% { - -webkit-transform: translate(0, -35%); - transform: translate(0, -35%); - } -} -.ld.ld-wander-v { - -webkit-animation: ld-wander-v 1s infinite ease-out; - animation: ld-wander-v 1s infinite ease-out; -} -@keyframes ld-jingle { - 0% { - -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - } - 4% { - -webkit-transform: translate(0, -40%) rotate(11deg) translate(0, 40%); - transform: translate(0, -40%) rotate(11deg) translate(0, 40%); - } - 10% { - -webkit-transform: translate(0, -40%) rotate(15deg) translate(0, 40%); - transform: translate(0, -40%) rotate(15deg) translate(0, 40%); - } - 18% { - -webkit-transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); - } - 20% { - -webkit-transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); - } - 21% { - -webkit-transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); - } - 22% { - -webkit-transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); - } - 24% { - -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - } - 26% { - -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - } - 28% { - -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - } - 30% { - -webkit-transform: translate(0, -40%) rotate(10deg) translate(0, 40%); - transform: translate(0, -40%) rotate(10deg) translate(0, 40%); - } - 31% { - -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - } - 33% { - -webkit-transform: translate(0, -40%) rotate(5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(5deg) translate(0, 40%); - } - 34% { - -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - } - 36% { - -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - } - 39% { - -webkit-transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); - } - 40% { - -webkit-transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); - } - 44% { - -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - } - 47% { - -webkit-transform: translate(0, -40%) rotate(7deg) translate(0, 40%); - transform: translate(0, -40%) rotate(7deg) translate(0, 40%); - } - 56% { - -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - } - 63% { - -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - } - 75% { - -webkit-transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); - } - 100% { - -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - } -} -@-webkit-keyframes ld-jingle { - 0% { - -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - } - 4% { - -webkit-transform: translate(0, -40%) rotate(11deg) translate(0, 40%); - transform: translate(0, -40%) rotate(11deg) translate(0, 40%); - } - 10% { - -webkit-transform: translate(0, -40%) rotate(15deg) translate(0, 40%); - transform: translate(0, -40%) rotate(15deg) translate(0, 40%); - } - 18% { - -webkit-transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); - } - 20% { - -webkit-transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); - } - 21% { - -webkit-transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); - } - 22% { - -webkit-transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); - } - 24% { - -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - } - 26% { - -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - } - 28% { - -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - } - 30% { - -webkit-transform: translate(0, -40%) rotate(10deg) translate(0, 40%); - transform: translate(0, -40%) rotate(10deg) translate(0, 40%); - } - 31% { - -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - transform: translate(0, -40%) rotate(9deg) translate(0, 40%); - } - 33% { - -webkit-transform: translate(0, -40%) rotate(5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(5deg) translate(0, 40%); - } - 34% { - -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - } - 36% { - -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - } - 39% { - -webkit-transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); - } - 40% { - -webkit-transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); - } - 44% { - -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - transform: translate(0, -40%) rotate(3deg) translate(0, 40%); - } - 47% { - -webkit-transform: translate(0, -40%) rotate(7deg) translate(0, 40%); - transform: translate(0, -40%) rotate(7deg) translate(0, 40%); - } - 56% { - -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); - } - 63% { - -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - transform: translate(0, -40%) rotate(1deg) translate(0, 40%); - } - 75% { - -webkit-transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); - transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); - } - 100% { - -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - transform: translate(0, -40%) rotate(0deg) translate(0, 40%); - } -} -.ld.ld-jingle { - -webkit-animation: ld-jingle 1s infinite; - animation: ld-jingle 1s infinite; -} -@keyframes ld-swim { - 0% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(5%, -10%) rotate(3deg); - transform: translate(5%, -10%) rotate(3deg); - } - 25% { - -webkit-transform: translate(0, -15%) rotate(6deg); - transform: translate(0, -15%) rotate(6deg); - } - 37.5% { - -webkit-transform: translate(-5%, -10%) rotate(3deg); - transform: translate(-5%, -10%) rotate(3deg); - } - 50% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 62.5% { - -webkit-transform: translate(5%, 10%) rotate(-3deg); - transform: translate(5%, 10%) rotate(-3deg); - } - 75% { - -webkit-transform: translate(0, 15%) rotate(-6deg); - transform: translate(0, 15%) rotate(-6deg); - } - 87.5% { - -webkit-transform: translate(-5%, 10%) rotate(-3deg); - transform: translate(-5%, 10%) rotate(-3deg); - } - 100% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } -} -@-webkit-keyframes ld-swim { - 0% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(5%, -10%) rotate(3deg); - transform: translate(5%, -10%) rotate(3deg); - } - 25% { - -webkit-transform: translate(0, -15%) rotate(6deg); - transform: translate(0, -15%) rotate(6deg); - } - 37.5% { - -webkit-transform: translate(-5%, -10%) rotate(3deg); - transform: translate(-5%, -10%) rotate(3deg); - } - 50% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 62.5% { - -webkit-transform: translate(5%, 10%) rotate(-3deg); - transform: translate(5%, 10%) rotate(-3deg); - } - 75% { - -webkit-transform: translate(0, 15%) rotate(-6deg); - transform: translate(0, 15%) rotate(-6deg); - } - 87.5% { - -webkit-transform: translate(-5%, 10%) rotate(-3deg); - transform: translate(-5%, 10%) rotate(-3deg); - } - 100% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } -} -.ld.ld-swim { - -webkit-animation: ld-swim 3s infinite linear; - animation: ld-swim 3s infinite linear; -} -@keyframes ld-leaf { - 0% { - -webkit-transform: translate(-14.7%, -117%) rotate(-0.3deg); - transform: translate(-14.7%, -117%) rotate(-0.3deg); - } - 1% { - -webkit-transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); - } - 2% { - -webkit-transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); - transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); - } - 3% { - -webkit-transform: translate(-13.5%, -100.5%) rotate(-1.5deg); - transform: translate(-13.5%, -100.5%) rotate(-1.5deg); - } - 5% { - -webkit-transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); - } - 7% { - -webkit-transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); - } - 10% { - -webkit-transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); - transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); - } - 12% { - -webkit-transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); - transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); - } - 13% { - -webkit-transform: translate(14.7%, -75%) rotate(-29.7deg); - transform: translate(14.7%, -75%) rotate(-29.7deg); - } - 14% { - -webkit-transform: translate(15%, -75%) rotate(-30deg); - transform: translate(15%, -75%) rotate(-30deg); - } - 15% { - -webkit-transform: translate(14.399999999999999%, -69%) rotate(0.6deg); - transform: translate(14.399999999999999%, -69%) rotate(0.6deg); - } - 16% { - -webkit-transform: translate(13.8%, -58.5%) rotate(1.2deg); - transform: translate(13.8%, -58.5%) rotate(1.2deg); - } - 19% { - -webkit-transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); - transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); - } - 21% { - -webkit-transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); - } - 24% { - -webkit-transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); - transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); - } - 26% { - -webkit-transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); - transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); - } - 27% { - -webkit-transform: translate(-14.7%, -31.5%) rotate(29.7deg); - transform: translate(-14.7%, -31.5%) rotate(29.7deg); - } - 28% { - -webkit-transform: translate(-15%, -31.5%) rotate(30deg); - transform: translate(-15%, -31.5%) rotate(30deg); - } - 29% { - -webkit-transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); - } - 30% { - -webkit-transform: translate(-13.8%, -16.5%) rotate(-1.2deg); - transform: translate(-13.8%, -16.5%) rotate(-1.2deg); - } - 31% { - -webkit-transform: translate(-13.5%, -15%) rotate(-1.5deg); - transform: translate(-13.5%, -15%) rotate(-1.5deg); - } - 33% { - -webkit-transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); - } - 36% { - -webkit-transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); - } - 38% { - -webkit-transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); - transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); - } - 40% { - -webkit-transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); - transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); - } - 41% { - -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); - transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); - } - 42% { - -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); - transform: translate(15%, 10.500000000000002%) rotate(-30deg); - } - 43% { - -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); - transform: translate(15%, 10.500000000000002%) rotate(-30deg); - } - 43% { - -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); - transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); - } - 43% { - -webkit-transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); - transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); - } - 45% { - -webkit-transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); - transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); - } - 45% { - -webkit-transform: translate(13.5%, 27%) rotate(1.5deg); - transform: translate(13.5%, 27%) rotate(1.5deg); - } - 48% { - -webkit-transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); - transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); - } - 50% { - -webkit-transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); - } - 52% { - -webkit-transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); - transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); - } - 54% { - -webkit-transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); - transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); - } - 56% { - -webkit-transform: translate(-14.7%, 54%) rotate(29.7deg); - transform: translate(-14.7%, 54%) rotate(29.7deg); - } - 57% { - -webkit-transform: translate(-14.7%, 54%) rotate(-0.3deg); - transform: translate(-14.7%, 54%) rotate(-0.3deg); - } - 58% { - -webkit-transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); - } - 59% { - -webkit-transform: translate(-13.5%, 70.5%) rotate(-1.5deg); - transform: translate(-13.5%, 70.5%) rotate(-1.5deg); - } - 62% { - -webkit-transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); - } - 64% { - -webkit-transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); - } - 67% { - -webkit-transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); - transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); - } - 69% { - -webkit-transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); - transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); - } - 70% { - -webkit-transform: translate(14.7%, 96%) rotate(-29.7deg); - transform: translate(14.7%, 96%) rotate(-29.7deg); - } - 71% { - -webkit-transform: translate(15%, 96%) rotate(-30deg); - transform: translate(15%, 96%) rotate(-30deg); - } - 72% { - -webkit-transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); - transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); - } - 73% { - -webkit-transform: translate(13.8%, 111%) rotate(1.2deg); - transform: translate(13.8%, 111%) rotate(1.2deg); - } - 74% { - -webkit-transform: translate(13.5%, 112.5%) rotate(1.5deg); - transform: translate(13.5%, 112.5%) rotate(1.5deg); - } - 76% { - -webkit-transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); - transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); - } - 79% { - -webkit-transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); - } - 81% { - -webkit-transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); - transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); - } - 83% { - -webkit-transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); - transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); - } - 84% { - -webkit-transform: translate(-14.7%, 139.5%) rotate(29.7deg); - transform: translate(-14.7%, 139.5%) rotate(29.7deg); - } - 85% { - -webkit-transform: translate(-15%, 139.5%) rotate(30deg); - transform: translate(-15%, 139.5%) rotate(30deg); - } - 86% { - -webkit-transform: translate(-14.7%, 139.5%) rotate(-0.3deg); - transform: translate(-14.7%, 139.5%) rotate(-0.3deg); - } - 86% { - -webkit-transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); - } - 88% { - -webkit-transform: translate(-13.5%, 156%) rotate(-1.5deg); - transform: translate(-13.5%, 156%) rotate(-1.5deg); - } - 90% { - -webkit-transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); - } - 93% { - -webkit-transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); - } - 95% { - -webkit-transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); - transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); - } - 97% { - -webkit-transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); - transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); - } - 99% { - -webkit-transform: translate(14.7%, 181.5%) rotate(-29.7deg); - transform: translate(14.7%, 181.5%) rotate(-29.7deg); - } - 100% { - -webkit-transform: translate(15%, 181.5%) rotate(-30deg); - transform: translate(15%, 181.5%) rotate(-30deg); - } -} -@-webkit-keyframes ld-leaf { - 0% { - -webkit-transform: translate(-14.7%, -117%) rotate(-0.3deg); - transform: translate(-14.7%, -117%) rotate(-0.3deg); - } - 1% { - -webkit-transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); - } - 2% { - -webkit-transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); - transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); - } - 3% { - -webkit-transform: translate(-13.5%, -100.5%) rotate(-1.5deg); - transform: translate(-13.5%, -100.5%) rotate(-1.5deg); - } - 5% { - -webkit-transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); - } - 7% { - -webkit-transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); - } - 10% { - -webkit-transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); - transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); - } - 12% { - -webkit-transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); - transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); - } - 13% { - -webkit-transform: translate(14.7%, -75%) rotate(-29.7deg); - transform: translate(14.7%, -75%) rotate(-29.7deg); - } - 14% { - -webkit-transform: translate(15%, -75%) rotate(-30deg); - transform: translate(15%, -75%) rotate(-30deg); - } - 15% { - -webkit-transform: translate(14.399999999999999%, -69%) rotate(0.6deg); - transform: translate(14.399999999999999%, -69%) rotate(0.6deg); - } - 16% { - -webkit-transform: translate(13.8%, -58.5%) rotate(1.2deg); - transform: translate(13.8%, -58.5%) rotate(1.2deg); - } - 19% { - -webkit-transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); - transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); - } - 21% { - -webkit-transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); - } - 24% { - -webkit-transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); - transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); - } - 26% { - -webkit-transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); - transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); - } - 27% { - -webkit-transform: translate(-14.7%, -31.5%) rotate(29.7deg); - transform: translate(-14.7%, -31.5%) rotate(29.7deg); - } - 28% { - -webkit-transform: translate(-15%, -31.5%) rotate(30deg); - transform: translate(-15%, -31.5%) rotate(30deg); - } - 29% { - -webkit-transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); - } - 30% { - -webkit-transform: translate(-13.8%, -16.5%) rotate(-1.2deg); - transform: translate(-13.8%, -16.5%) rotate(-1.2deg); - } - 31% { - -webkit-transform: translate(-13.5%, -15%) rotate(-1.5deg); - transform: translate(-13.5%, -15%) rotate(-1.5deg); - } - 33% { - -webkit-transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); - } - 36% { - -webkit-transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); - } - 38% { - -webkit-transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); - transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); - } - 40% { - -webkit-transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); - transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); - } - 41% { - -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); - transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); - } - 42% { - -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); - transform: translate(15%, 10.500000000000002%) rotate(-30deg); - } - 43% { - -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); - transform: translate(15%, 10.500000000000002%) rotate(-30deg); - } - 43% { - -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); - transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); - } - 43% { - -webkit-transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); - transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); - } - 45% { - -webkit-transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); - transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); - } - 45% { - -webkit-transform: translate(13.5%, 27%) rotate(1.5deg); - transform: translate(13.5%, 27%) rotate(1.5deg); - } - 48% { - -webkit-transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); - transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); - } - 50% { - -webkit-transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); - } - 52% { - -webkit-transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); - transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); - } - 54% { - -webkit-transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); - transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); - } - 56% { - -webkit-transform: translate(-14.7%, 54%) rotate(29.7deg); - transform: translate(-14.7%, 54%) rotate(29.7deg); - } - 57% { - -webkit-transform: translate(-14.7%, 54%) rotate(-0.3deg); - transform: translate(-14.7%, 54%) rotate(-0.3deg); - } - 58% { - -webkit-transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); - } - 59% { - -webkit-transform: translate(-13.5%, 70.5%) rotate(-1.5deg); - transform: translate(-13.5%, 70.5%) rotate(-1.5deg); - } - 62% { - -webkit-transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); - } - 64% { - -webkit-transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); - } - 67% { - -webkit-transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); - transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); - } - 69% { - -webkit-transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); - transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); - } - 70% { - -webkit-transform: translate(14.7%, 96%) rotate(-29.7deg); - transform: translate(14.7%, 96%) rotate(-29.7deg); - } - 71% { - -webkit-transform: translate(15%, 96%) rotate(-30deg); - transform: translate(15%, 96%) rotate(-30deg); - } - 72% { - -webkit-transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); - transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); - } - 73% { - -webkit-transform: translate(13.8%, 111%) rotate(1.2deg); - transform: translate(13.8%, 111%) rotate(1.2deg); - } - 74% { - -webkit-transform: translate(13.5%, 112.5%) rotate(1.5deg); - transform: translate(13.5%, 112.5%) rotate(1.5deg); - } - 76% { - -webkit-transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); - transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); - } - 79% { - -webkit-transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); - } - 81% { - -webkit-transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); - transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); - } - 83% { - -webkit-transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); - transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); - } - 84% { - -webkit-transform: translate(-14.7%, 139.5%) rotate(29.7deg); - transform: translate(-14.7%, 139.5%) rotate(29.7deg); - } - 85% { - -webkit-transform: translate(-15%, 139.5%) rotate(30deg); - transform: translate(-15%, 139.5%) rotate(30deg); - } - 86% { - -webkit-transform: translate(-14.7%, 139.5%) rotate(-0.3deg); - transform: translate(-14.7%, 139.5%) rotate(-0.3deg); - } - 86% { - -webkit-transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); - transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); - } - 88% { - -webkit-transform: translate(-13.5%, 156%) rotate(-1.5deg); - transform: translate(-13.5%, 156%) rotate(-1.5deg); - } - 90% { - -webkit-transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); - } - 93% { - -webkit-transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); - } - 95% { - -webkit-transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); - transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); - } - 97% { - -webkit-transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); - transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); - } - 99% { - -webkit-transform: translate(14.7%, 181.5%) rotate(-29.7deg); - transform: translate(14.7%, 181.5%) rotate(-29.7deg); - } - 100% { - -webkit-transform: translate(15%, 181.5%) rotate(-30deg); - transform: translate(15%, 181.5%) rotate(-30deg); - } -} -.ld.ld-leaf { - -webkit-animation: ld-leaf 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); - animation: ld-leaf 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); -} -@keyframes ld-slot { - 0% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 9.09% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 9.1% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 16.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 17% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 23.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 23.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 29.59% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 29.6% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 34.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 34.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 38.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 38.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 41.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 41.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 44.39% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 44.4% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 46.29% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 46.3% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 47.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 47.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 48.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 48.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.39% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 49.4% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 49.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 50.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 50.59% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50.6% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 51.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 51.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 52.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 52.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 53.690000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 53.7% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 55.59% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 55.6% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 58.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 58.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 61.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 61.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 65.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 65.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 70.39% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 70.4% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 76.19% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 76.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 82.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 83% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 90.89% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 90.9% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 99.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 100% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } -} -@-webkit-keyframes ld-slot { - 0% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 9.09% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 9.1% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 16.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 17% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 23.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 23.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 29.59% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 29.6% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 34.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 34.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 38.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 38.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 41.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 41.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 44.39% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 44.4% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 46.29% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 46.3% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 47.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 47.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 48.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 48.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.39% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 49.4% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.79% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 49.8% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 49.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 50.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 50.59% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 50.6% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 51.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 51.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 52.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 52.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 53.690000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 53.7% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 55.59% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 55.6% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 58.190000000000005% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 58.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 61.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 61.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 65.49% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 65.5% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 70.39% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 70.4% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 76.19% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 76.2% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 82.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 83% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 90.89% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 90.9% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } - 99.99% { - -webkit-transform: translate(0, 160%); - transform: translate(0, 160%); - } - 100% { - -webkit-transform: translate(0, -160%); - transform: translate(0, -160%); - } -} -.ld.ld-slot { - -webkit-animation: ld-slot 6s infinite linear; - animation: ld-slot 6s infinite linear; -} -@keyframes ld-bounce-px { - 0%, 90% { - animation-timing-function: linear; - } - 10% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 50% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0, 30px) scaleY(0.5); - transform: translate(0, 30px) scaleY(0.5); - } - 10% { - -webkit-transform: translate(0, 5px) scaleY(1.1); - transform: translate(0, 5px) scaleY(1.1); - } - 50% { - -webkit-transform: translate(0, -37px) scaleY(1.1); - transform: translate(0, -37px) scaleY(1.1); - } - 90% { - -webkit-transform: translate(0, 5px) scaleY(1.1); - transform: translate(0, 5px) scaleY(1.1); - } - 100% { - -webkit-transform: translate(0, 30px) scaleY(0.5); - transform: translate(0, 30px) scaleY(0.5); - } -} -@-webkit-keyframes ld-bounce-px { - 0%, 90% { - animation-timing-function: linear; - } - 10% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 50% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0, 30px) scaleY(0.5); - transform: translate(0, 30px) scaleY(0.5); - } - 10% { - -webkit-transform: translate(0, 5px) scaleY(1.1); - transform: translate(0, 5px) scaleY(1.1); - } - 50% { - -webkit-transform: translate(0, -37px) scaleY(1.1); - transform: translate(0, -37px) scaleY(1.1); - } - 90% { - -webkit-transform: translate(0, 5px) scaleY(1.1); - transform: translate(0, 5px) scaleY(1.1); - } - 100% { - -webkit-transform: translate(0, 30px) scaleY(0.5); - transform: translate(0, 30px) scaleY(0.5); - } -} -.ld.ld-bounce-px { - -webkit-animation: ld-bounce-px 1s infinite; - animation: ld-bounce-px 1s infinite; -} -@keyframes ld-bounce-px-rtl { - 0% { - -webkit-transform: translate(80px, -20px); - transform: translate(80px, -20px); - } - 12.5% { - -webkit-transform: translate(60px, -12px); - transform: translate(60px, -12px); - } - 25% { - -webkit-transform: translate(40px, 0); - transform: translate(40px, 0); - } - 37.5% { - -webkit-transform: translate(25px, -12px); - transform: translate(25px, -12px); - } - 50% { - -webkit-transform: translate(0, -20px); - transform: translate(0, -20px); - } - 62.5% { - -webkit-transform: translate(-25px, -12px); - transform: translate(-25px, -12px); - } - 75% { - -webkit-transform: translate(-40px, 0); - transform: translate(-40px, 0); - } - 87.5% { - -webkit-transform: translate(-60px, -12px); - transform: translate(-60px, -12px); - } - 100% { - -webkit-transform: translate(-80px, -20px); - transform: translate(-80px, -20px); - } -} -@-webkit-keyframes ld-bounce-px-rtl { - 0% { - -webkit-transform: translate(80px, -20px); - transform: translate(80px, -20px); - } - 12.5% { - -webkit-transform: translate(60px, -12px); - transform: translate(60px, -12px); - } - 25% { - -webkit-transform: translate(40px, 0); - transform: translate(40px, 0); - } - 37.5% { - -webkit-transform: translate(25px, -12px); - transform: translate(25px, -12px); - } - 50% { - -webkit-transform: translate(0, -20px); - transform: translate(0, -20px); - } - 62.5% { - -webkit-transform: translate(-25px, -12px); - transform: translate(-25px, -12px); - } - 75% { - -webkit-transform: translate(-40px, 0); - transform: translate(-40px, 0); - } - 87.5% { - -webkit-transform: translate(-60px, -12px); - transform: translate(-60px, -12px); - } - 100% { - -webkit-transform: translate(-80px, -20px); - transform: translate(-80px, -20px); - } -} -.ld.ld-bounce-px-rtl { - -webkit-animation: ld-bounce-px-rtl 1s infinite linear; - animation: ld-bounce-px-rtl 1s infinite linear; -} -@keyframes ld-bounce-px-ltr { - 0% { - -webkit-transform: translate(-80px, -20px); - transform: translate(-80px, -20px); - } - 12.5% { - -webkit-transform: translate(-60px, -12px); - transform: translate(-60px, -12px); - } - 25% { - -webkit-transform: translate(-50px, 0); - transform: translate(-50px, 0); - } - 37.5% { - -webkit-transform: translate(-25px, -12px); - transform: translate(-25px, -12px); - } - 50% { - -webkit-transform: translate(0, -20px); - transform: translate(0, -20px); - } - 62.5% { - -webkit-transform: translate(25px, -12px); - transform: translate(25px, -12px); - } - 75% { - -webkit-transform: translate(50px, 0); - transform: translate(50px, 0); - } - 87.5% { - -webkit-transform: translate(60px, -12px); - transform: translate(60px, -12px); - } - 100% { - -webkit-transform: translate(80px, -20px); - transform: translate(80px, -20px); - } -} -@-webkit-keyframes ld-bounce-px-ltr { - 0% { - -webkit-transform: translate(-80px, -20px); - transform: translate(-80px, -20px); - } - 12.5% { - -webkit-transform: translate(-60px, -12px); - transform: translate(-60px, -12px); - } - 25% { - -webkit-transform: translate(-50px, 0); - transform: translate(-50px, 0); - } - 37.5% { - -webkit-transform: translate(-25px, -12px); - transform: translate(-25px, -12px); - } - 50% { - -webkit-transform: translate(0, -20px); - transform: translate(0, -20px); - } - 62.5% { - -webkit-transform: translate(25px, -12px); - transform: translate(25px, -12px); - } - 75% { - -webkit-transform: translate(50px, 0); - transform: translate(50px, 0); - } - 87.5% { - -webkit-transform: translate(60px, -12px); - transform: translate(60px, -12px); - } - 100% { - -webkit-transform: translate(80px, -20px); - transform: translate(80px, -20px); - } -} -.ld.ld-bounce-px-ltr { - -webkit-animation: ld-bounce-px-ltr 1s infinite linear; - animation: ld-bounce-px-ltr 1s infinite linear; -} -@keyframes ld-bounce-a-px { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 12.5%, 37.5%, 62.5%, 87.5% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 12.5% { - -webkit-transform: translate(5px, -28px); - transform: translate(5px, -28px); - } - 25% { - -webkit-transform: translate(10px, 0); - transform: translate(10px, 0); - } - 37.5% { - -webkit-transform: translate(5px, -28px); - transform: translate(5px, -28px); - } - 50% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 62.5% { - -webkit-transform: translate(-5px, -28px); - transform: translate(-5px, -28px); - } - 75% { - -webkit-transform: translate(-10px, 0); - transform: translate(-10px, 0); - } - 87.5% { - -webkit-transform: translate(-5px, -28px); - transform: translate(-5px, -28px); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-bounce-a-px { - 0%, 25%, 50%, 75%, 100% { - animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); - } - 12.5%, 37.5%, 62.5%, 87.5% { - animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 12.5% { - -webkit-transform: translate(5px, -28px); - transform: translate(5px, -28px); - } - 25% { - -webkit-transform: translate(10px, 0); - transform: translate(10px, 0); - } - 37.5% { - -webkit-transform: translate(5px, -28px); - transform: translate(5px, -28px); - } - 50% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 62.5% { - -webkit-transform: translate(-5px, -28px); - transform: translate(-5px, -28px); - } - 75% { - -webkit-transform: translate(-10px, 0); - transform: translate(-10px, 0); - } - 87.5% { - -webkit-transform: translate(-5px, -28px); - transform: translate(-5px, -28px); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-bounce-a-px { - -webkit-animation: ld-bounce-a-px 2s infinite; - animation: ld-bounce-a-px 2s infinite; -} -@keyframes ld-float-px { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: linear; - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } - 30% { - -webkit-transform: translate(0, -10px); - transform: translate(0, -10px); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 50% { - -webkit-transform: translate(0, -10px); - transform: translate(0, -10px); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } -} -@-webkit-keyframes ld-float-px { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: linear; - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } - 30% { - -webkit-transform: translate(0, -10px); - transform: translate(0, -10px); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 50% { - -webkit-transform: translate(0, -10px); - transform: translate(0, -10px); - box-shadow: 0 5px 5px rgba(0,0,0,0.3); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - box-shadow: 0 0 0 rgba(0,0,0,0.3); - } -} -.ld.ld-float-px { - -webkit-animation: ld-float-px 1s infinite; - animation: ld-float-px 1s infinite; -} -@keyframes ld-hit-px { - 0% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - -webkit-transform: scale(0) translate(0, 0) skewX(0); - transform: scale(0) translate(0, 0) skewX(0); - } - 20% { - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 50% { - animation-timing-function: cubic-bezier(1, 0, 1, 0.5); - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 100% { - -webkit-transform: scale(1) translate(0, 150px) skewX(20deg); - transform: scale(1) translate(0, 150px) skewX(20deg); - } -} -@-webkit-keyframes ld-hit-px { - 0% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - -webkit-transform: scale(0) translate(0, 0) skewX(0); - transform: scale(0) translate(0, 0) skewX(0); - } - 20% { - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 50% { - animation-timing-function: cubic-bezier(1, 0, 1, 0.5); - -webkit-transform: scale(1) translate(0, 0) skewX(20deg); - transform: scale(1) translate(0, 0) skewX(20deg); - } - 100% { - -webkit-transform: scale(1) translate(0, 150px) skewX(20deg); - transform: scale(1) translate(0, 150px) skewX(20deg); - } -} -.ld.ld-hit-px { - -webkit-animation: ld-hit-px 2s infinite; - animation: ld-hit-px 2s infinite; -} -@keyframes ld-jelly-px { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 16.6% { - -webkit-transform: translate(-30px, 0) skewX(30deg); - transform: translate(-30px, 0) skewX(30deg); - } - 33.3% { - -webkit-transform: translate(25px, 0) skewX(-20deg); - transform: translate(25px, 0) skewX(-20deg); - } - 50% { - -webkit-transform: translate(-12px, 0) skewX(10deg); - transform: translate(-12px, 0) skewX(10deg); - } - 66.6% { - -webkit-transform: translate(6px, 0) skewX(-5deg); - transform: translate(6px, 0) skewX(-5deg); - } - 83.3% { - -webkit-transform: translate(-2.5px, 0) skewX(2deg); - transform: translate(-2.5px, 0) skewX(2deg); - } - 100% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } -} -@-webkit-keyframes ld-jelly-px { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 16.6% { - -webkit-transform: translate(-30px, 0) skewX(30deg); - transform: translate(-30px, 0) skewX(30deg); - } - 33.3% { - -webkit-transform: translate(25px, 0) skewX(-20deg); - transform: translate(25px, 0) skewX(-20deg); - } - 50% { - -webkit-transform: translate(-12px, 0) skewX(10deg); - transform: translate(-12px, 0) skewX(10deg); - } - 66.6% { - -webkit-transform: translate(6px, 0) skewX(-5deg); - transform: translate(6px, 0) skewX(-5deg); - } - 83.3% { - -webkit-transform: translate(-2.5px, 0) skewX(2deg); - transform: translate(-2.5px, 0) skewX(2deg); - } - 100% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } -} -.ld.ld-jelly-px { - -webkit-animation: ld-jelly-px 1s infinite linear; - animation: ld-jelly-px 1s infinite linear; -} -@keyframes ld-jump-px { - 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { - animation-timing-function: ease-out; - } - 14%, 38%, 56%, 70%, 81%, 90%, 97% { - animation-timing-function: ease-in; - } - 0% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 14% { - -webkit-transform: translateY(-27px); - transform: translateY(-27px); - } - 28% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 38% { - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } - 48% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 56% { - -webkit-transform: translateY(-16px); - transform: translateY(-16px); - } - 64% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 70% { - -webkit-transform: translateY(-12px); - transform: translateY(-12px); - } - 76% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 81% { - -webkit-transform: translateY(-7.5px); - transform: translateY(-7.5px); - } - 86% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 90% { - -webkit-transform: translateY(-3px); - transform: translateY(-3px); - } - 93% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 97% { - -webkit-transform: translateY(-1.5px); - transform: translateY(-1.5px); - } - 100% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } -} -@-webkit-keyframes ld-jump-px { - 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { - animation-timing-function: ease-out; - } - 14%, 38%, 56%, 70%, 81%, 90%, 97% { - animation-timing-function: ease-in; - } - 0% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 14% { - -webkit-transform: translateY(-27px); - transform: translateY(-27px); - } - 28% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 38% { - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } - 48% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 56% { - -webkit-transform: translateY(-16px); - transform: translateY(-16px); - } - 64% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 70% { - -webkit-transform: translateY(-12px); - transform: translateY(-12px); - } - 76% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 81% { - -webkit-transform: translateY(-7.5px); - transform: translateY(-7.5px); - } - 86% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 90% { - -webkit-transform: translateY(-3px); - transform: translateY(-3px); - } - 93% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } - 97% { - -webkit-transform: translateY(-1.5px); - transform: translateY(-1.5px); - } - 100% { - -webkit-transform: translateY(0px); - transform: translateY(0px); - } -} -.ld.ld-jump-px { - -webkit-animation: ld-jump-px 1.5s ease-in infinite; - animation: ld-jump-px 1.5s ease-in infinite; -} -@keyframes ld-orbit-px { - 0% { - -webkit-transform: translate(30px, 0) rotate(0deg); - transform: translate(30px, 0) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(21px, 21px) rotate(45deg); - transform: translate(21px, 21px) rotate(45deg); - } - 25% { - -webkit-transform: translate(0, 30px) rotate(90deg); - transform: translate(0, 30px) rotate(90deg); - } - 37.5% { - -webkit-transform: translate(-21px, 21px) rotate(135deg); - transform: translate(-21px, 21px) rotate(135deg); - } - 50% { - -webkit-transform: translate(-30px, 0) rotate(180deg); - transform: translate(-30px, 0) rotate(180deg); - } - 62.5% { - -webkit-transform: translate(-21px, -21px) rotate(225deg); - transform: translate(-21px, -21px) rotate(225deg); - } - 75% { - -webkit-transform: translate(0, -30px) rotate(270deg); - transform: translate(0, -30px) rotate(270deg); - } - 87.5% { - -webkit-transform: translate(21px, -21px) rotate(315deg); - transform: translate(21px, -21px) rotate(315deg); - } - 100% { - -webkit-transform: translate(30px, 0) rotate(360deg); - transform: translate(30px, 0) rotate(360deg); - } -} -@-webkit-keyframes ld-orbit-px { - 0% { - -webkit-transform: translate(30px, 0) rotate(0deg); - transform: translate(30px, 0) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(21px, 21px) rotate(45deg); - transform: translate(21px, 21px) rotate(45deg); - } - 25% { - -webkit-transform: translate(0, 30px) rotate(90deg); - transform: translate(0, 30px) rotate(90deg); - } - 37.5% { - -webkit-transform: translate(-21px, 21px) rotate(135deg); - transform: translate(-21px, 21px) rotate(135deg); - } - 50% { - -webkit-transform: translate(-30px, 0) rotate(180deg); - transform: translate(-30px, 0) rotate(180deg); - } - 62.5% { - -webkit-transform: translate(-21px, -21px) rotate(225deg); - transform: translate(-21px, -21px) rotate(225deg); - } - 75% { - -webkit-transform: translate(0, -30px) rotate(270deg); - transform: translate(0, -30px) rotate(270deg); - } - 87.5% { - -webkit-transform: translate(21px, -21px) rotate(315deg); - transform: translate(21px, -21px) rotate(315deg); - } - 100% { - -webkit-transform: translate(30px, 0) rotate(360deg); - transform: translate(30px, 0) rotate(360deg); - } -} -.ld.ld-orbit-px { - -webkit-animation: ld-orbit-px 1s infinite linear; - animation: ld-orbit-px 1s infinite linear; -} -@keyframes ld-rush-px-rtl { - 0% { - -webkit-transform: translate(100px, 0) skewX(-45deg); - transform: translate(100px, 0) skewX(-45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(-20px, 0) skewX(35deg); - transform: translate(-20px, 0) skewX(35deg); - } - 45% { - -webkit-transform: translate(10px, 0) skewX(-15deg); - transform: translate(10px, 0) skewX(-15deg); - } - 60% { - -webkit-transform: translate(-5px, 0) skewX(7deg); - transform: translate(-5px, 0) skewX(7deg); - } - 80% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(-150px, 0) skewX(-45deg); - transform: translate(-150px, 0) skewX(-45deg); - } -} -@-webkit-keyframes ld-rush-px-rtl { - 0% { - -webkit-transform: translate(100px, 0) skewX(-45deg); - transform: translate(100px, 0) skewX(-45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(-20px, 0) skewX(35deg); - transform: translate(-20px, 0) skewX(35deg); - } - 45% { - -webkit-transform: translate(10px, 0) skewX(-15deg); - transform: translate(10px, 0) skewX(-15deg); - } - 60% { - -webkit-transform: translate(-5px, 0) skewX(7deg); - transform: translate(-5px, 0) skewX(7deg); - } - 80% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(-150px, 0) skewX(-45deg); - transform: translate(-150px, 0) skewX(-45deg); - } -} -.ld.ld-rush-px-rtl { - -webkit-animation: ld-rush-px-rtl 1.5s infinite linear; - animation: ld-rush-px-rtl 1.5s infinite linear; -} -@keyframes ld-rush-px-ltr { - 0% { - -webkit-transform: translate(-100px, 0) skewX(45deg); - transform: translate(-100px, 0) skewX(45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(20px, 0) skewX(-35deg); - transform: translate(20px, 0) skewX(-35deg); - } - 45% { - -webkit-transform: translate(-10px, 0) skewX(15deg); - transform: translate(-10px, 0) skewX(15deg); - } - 60% { - -webkit-transform: translate(5px, 0) skewX(-7deg); - transform: translate(5px, 0) skewX(-7deg); - } - 80% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(150px, 0) skewX(45deg); - transform: translate(150px, 0) skewX(45deg); - } -} -@-webkit-keyframes ld-rush-px-ltr { - 0% { - -webkit-transform: translate(-100px, 0) skewX(45deg); - transform: translate(-100px, 0) skewX(45deg); - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 30% { - -webkit-transform: translate(20px, 0) skewX(-35deg); - transform: translate(20px, 0) skewX(-35deg); - } - 45% { - -webkit-transform: translate(-10px, 0) skewX(15deg); - transform: translate(-10px, 0) skewX(15deg); - } - 60% { - -webkit-transform: translate(5px, 0) skewX(-7deg); - transform: translate(5px, 0) skewX(-7deg); - } - 80% { - -webkit-transform: translate(0, 0) skewX(0deg); - transform: translate(0, 0) skewX(0deg); - } - 100% { - -webkit-transform: translate(150px, 0) skewX(45deg); - transform: translate(150px, 0) skewX(45deg); - } -} -.ld.ld-rush-px-ltr { - -webkit-animation: ld-rush-px-ltr 1.5s infinite linear; - animation: ld-rush-px-ltr 1.5s infinite linear; -} -@keyframes ld-shake-px { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 16.6% { - -webkit-transform: translate(-35px, 0); - transform: translate(-35px, 0); - } - 33.3% { - -webkit-transform: translate(25px, 0); - transform: translate(25px, 0); - } - 50% { - -webkit-transform: translate(-12px, 0); - transform: translate(-12px, 0); - } - 66.6% { - -webkit-transform: translate(6px, 0); - transform: translate(6px, 0); - } - 83.3% { - -webkit-transform: translate(-2.5px, 0); - transform: translate(-2.5px, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-shake-px { - 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 16.6% { - -webkit-transform: translate(-35px, 0); - transform: translate(-35px, 0); - } - 33.3% { - -webkit-transform: translate(25px, 0); - transform: translate(25px, 0); - } - 50% { - -webkit-transform: translate(-12px, 0); - transform: translate(-12px, 0); - } - 66.6% { - -webkit-transform: translate(6px, 0); - transform: translate(6px, 0); - } - 83.3% { - -webkit-transform: translate(-2.5px, 0); - transform: translate(-2.5px, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-shake-px { - -webkit-animation: ld-shake-px 1s infinite linear; - animation: ld-shake-px 1s infinite linear; -} -@keyframes ld-slide-px-ltr { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(100px, 0); - transform: translate(100px, 0); - } - 50% { - -webkit-transform: translate(-100px, 0); - transform: translate(-100px, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-px-ltr { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(100px, 0); - transform: translate(100px, 0); - } - 50% { - -webkit-transform: translate(-100px, 0); - transform: translate(-100px, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-px-ltr { - -webkit-animation: ld-slide-px-ltr 1s infinite; - animation: ld-slide-px-ltr 1s infinite; -} -@keyframes ld-slide-px-rtl { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(-100px, 0); - transform: translate(-100px, 0); - } - 50% { - -webkit-transform: translate(100px, 0); - transform: translate(100px, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-px-rtl { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(-100px, 0); - transform: translate(-100px, 0); - } - 50% { - -webkit-transform: translate(100px, 0); - transform: translate(100px, 0); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-px-rtl { - -webkit-animation: ld-slide-px-rtl 1s infinite; - animation: ld-slide-px-rtl 1s infinite; -} -@keyframes ld-slide-px-btt { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 50% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-px-btt { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 50% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-px-btt { - -webkit-animation: ld-slide-px-btt 1s infinite; - animation: ld-slide-px-btt 1s infinite; -} -@keyframes ld-slide-px-ttb { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -@-webkit-keyframes ld-slide-px-ttb { - 0%, 100% { - animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); - } - 50% { - animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); - } - 0% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 49.9% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.ld.ld-slide-px-ttb { - -webkit-animation: ld-slide-px-ttb 1s infinite; - animation: ld-slide-px-ttb 1s infinite; -} -@keyframes ld-tremble-px { - 0% { - -webkit-transform: translate(1px, 1px); - transform: translate(1px, 1px); - } - 5% { - -webkit-transform: translate(0, 1px); - transform: translate(0, 1px); - } - 10% { - -webkit-transform: translate(1px, 2px); - transform: translate(1px, 2px); - } - 15% { - -webkit-transform: translate(2px, 1px); - transform: translate(2px, 1px); - } - 20% { - -webkit-transform: translate(3px, 0); - transform: translate(3px, 0); - } - 25% { - -webkit-transform: translate(1px, 2px); - transform: translate(1px, 2px); - } - 30% { - -webkit-transform: translate(1px, 3px); - transform: translate(1px, 3px); - } - 35% { - -webkit-transform: translate(0, 1px); - transform: translate(0, 1px); - } - 40% { - -webkit-transform: translate(1px, 1px); - transform: translate(1px, 1px); - } - 45% { - -webkit-transform: translate(1px, 0); - transform: translate(1px, 0); - } - 50% { - -webkit-transform: translate(2px, 1px); - transform: translate(2px, 1px); - } - 55% { - -webkit-transform: translate(1px, 2px); - transform: translate(1px, 2px); - } - 60% { - -webkit-transform: translate(3px, 1px); - transform: translate(3px, 1px); - } - 65% { - -webkit-transform: translate(0, 2px); - transform: translate(0, 2px); - } - 70% { - -webkit-transform: translate(3px, 0); - transform: translate(3px, 0); - } - 75% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 80% { - -webkit-transform: translate(2px, 3px); - transform: translate(2px, 3px); - } - 85% { - -webkit-transform: translate(1px, 0); - transform: translate(1px, 0); - } - 90% { - -webkit-transform: translate(0, 2px); - transform: translate(0, 2px); - } - 95% { - -webkit-transform: translate(3px, 2px); - transform: translate(3px, 2px); - } -} -@-webkit-keyframes ld-tremble-px { - 0% { - -webkit-transform: translate(1px, 1px); - transform: translate(1px, 1px); - } - 5% { - -webkit-transform: translate(0, 1px); - transform: translate(0, 1px); - } - 10% { - -webkit-transform: translate(1px, 2px); - transform: translate(1px, 2px); - } - 15% { - -webkit-transform: translate(2px, 1px); - transform: translate(2px, 1px); - } - 20% { - -webkit-transform: translate(3px, 0); - transform: translate(3px, 0); - } - 25% { - -webkit-transform: translate(1px, 2px); - transform: translate(1px, 2px); - } - 30% { - -webkit-transform: translate(1px, 3px); - transform: translate(1px, 3px); - } - 35% { - -webkit-transform: translate(0, 1px); - transform: translate(0, 1px); - } - 40% { - -webkit-transform: translate(1px, 1px); - transform: translate(1px, 1px); - } - 45% { - -webkit-transform: translate(1px, 0); - transform: translate(1px, 0); - } - 50% { - -webkit-transform: translate(2px, 1px); - transform: translate(2px, 1px); - } - 55% { - -webkit-transform: translate(1px, 2px); - transform: translate(1px, 2px); - } - 60% { - -webkit-transform: translate(3px, 1px); - transform: translate(3px, 1px); - } - 65% { - -webkit-transform: translate(0, 2px); - transform: translate(0, 2px); - } - 70% { - -webkit-transform: translate(3px, 0); - transform: translate(3px, 0); - } - 75% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } - 80% { - -webkit-transform: translate(2px, 3px); - transform: translate(2px, 3px); - } - 85% { - -webkit-transform: translate(1px, 0); - transform: translate(1px, 0); - } - 90% { - -webkit-transform: translate(0, 2px); - transform: translate(0, 2px); - } - 95% { - -webkit-transform: translate(3px, 2px); - transform: translate(3px, 2px); - } -} -.ld.ld-tremble-px { - -webkit-animation: ld-tremble-px 1s infinite; - animation: ld-tremble-px 1s infinite; -} -@keyframes ld-wander-px-h { - 0% { - -webkit-transform: translate(-35px, 0); - transform: translate(-35px, 0); - } - 50% { - -webkit-transform: translate(35px, 0); - transform: translate(35px, 0); - } - 100% { - -webkit-transform: translate(-35px, 0); - transform: translate(-35px, 0); - } -} -@-webkit-keyframes ld-wander-px-h { - 0% { - -webkit-transform: translate(-35px, 0); - transform: translate(-35px, 0); - } - 50% { - -webkit-transform: translate(35px, 0); - transform: translate(35px, 0); - } - 100% { - -webkit-transform: translate(-35px, 0); - transform: translate(-35px, 0); - } -} -.ld.ld-wander-px-h { - -webkit-animation: ld-wander-px-h 1s infinite ease-out; - animation: ld-wander-px-h 1s infinite ease-out; -} -@keyframes ld-wander-px-v { - 0% { - -webkit-transform: translate(0, -35px); - transform: translate(0, -35px); - } - 50% { - -webkit-transform: translate(0, 35px); - transform: translate(0, 35px); - } - 100% { - -webkit-transform: translate(0, -35px); - transform: translate(0, -35px); - } -} -@-webkit-keyframes ld-wander-px-v { - 0% { - -webkit-transform: translate(0, -35px); - transform: translate(0, -35px); - } - 50% { - -webkit-transform: translate(0, 35px); - transform: translate(0, 35px); - } - 100% { - -webkit-transform: translate(0, -35px); - transform: translate(0, -35px); - } -} -.ld.ld-wander-px-v { - -webkit-animation: ld-wander-px-v 1s infinite ease-out; - animation: ld-wander-px-v 1s infinite ease-out; -} -@keyframes ld-jingle-px { - 0% { - -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - } - 4% { - -webkit-transform: translate(0, -40px) rotate(11deg) translate(0, 40px); - transform: translate(0, -40px) rotate(11deg) translate(0, 40px); - } - 10% { - -webkit-transform: translate(0, -40px) rotate(15deg) translate(0, 40px); - transform: translate(0, -40px) rotate(15deg) translate(0, 40px); - } - 18% { - -webkit-transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); - } - 20% { - -webkit-transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); - } - 21% { - -webkit-transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); - } - 22% { - -webkit-transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); - } - 24% { - -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - } - 26% { - -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - } - 28% { - -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - } - 30% { - -webkit-transform: translate(0, -40px) rotate(10deg) translate(0, 40px); - transform: translate(0, -40px) rotate(10deg) translate(0, 40px); - } - 31% { - -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - } - 33% { - -webkit-transform: translate(0, -40px) rotate(5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(5deg) translate(0, 40px); - } - 34% { - -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - } - 36% { - -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - } - 39% { - -webkit-transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); - } - 40% { - -webkit-transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); - } - 44% { - -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - } - 47% { - -webkit-transform: translate(0, -40px) rotate(7deg) translate(0, 40px); - transform: translate(0, -40px) rotate(7deg) translate(0, 40px); - } - 56% { - -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - } - 63% { - -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - } - 75% { - -webkit-transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); - } - 100% { - -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - } -} -@-webkit-keyframes ld-jingle-px { - 0% { - -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - } - 4% { - -webkit-transform: translate(0, -40px) rotate(11deg) translate(0, 40px); - transform: translate(0, -40px) rotate(11deg) translate(0, 40px); - } - 10% { - -webkit-transform: translate(0, -40px) rotate(15deg) translate(0, 40px); - transform: translate(0, -40px) rotate(15deg) translate(0, 40px); - } - 18% { - -webkit-transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); - } - 20% { - -webkit-transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); - } - 21% { - -webkit-transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); - } - 22% { - -webkit-transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); - } - 24% { - -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - } - 26% { - -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - } - 28% { - -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - } - 30% { - -webkit-transform: translate(0, -40px) rotate(10deg) translate(0, 40px); - transform: translate(0, -40px) rotate(10deg) translate(0, 40px); - } - 31% { - -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - transform: translate(0, -40px) rotate(9deg) translate(0, 40px); - } - 33% { - -webkit-transform: translate(0, -40px) rotate(5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(5deg) translate(0, 40px); - } - 34% { - -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - } - 36% { - -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - } - 39% { - -webkit-transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); - } - 40% { - -webkit-transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); - } - 44% { - -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - transform: translate(0, -40px) rotate(3deg) translate(0, 40px); - } - 47% { - -webkit-transform: translate(0, -40px) rotate(7deg) translate(0, 40px); - transform: translate(0, -40px) rotate(7deg) translate(0, 40px); - } - 56% { - -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); - } - 63% { - -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - transform: translate(0, -40px) rotate(1deg) translate(0, 40px); - } - 75% { - -webkit-transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); - transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); - } - 100% { - -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - transform: translate(0, -40px) rotate(0deg) translate(0, 40px); - } -} -.ld.ld-jingle-px { - -webkit-animation: ld-jingle-px 1s infinite; - animation: ld-jingle-px 1s infinite; -} -@keyframes ld-swim-px { - 0% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(1px, -2px) rotate(3deg); - transform: translate(1px, -2px) rotate(3deg); - } - 25% { - -webkit-transform: translate(0, -3px) rotate(6deg); - transform: translate(0, -3px) rotate(6deg); - } - 37.5% { - -webkit-transform: translate(-1px, -2px) rotate(3deg); - transform: translate(-1px, -2px) rotate(3deg); - } - 50% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 62.5% { - -webkit-transform: translate(1px, 2px) rotate(-3deg); - transform: translate(1px, 2px) rotate(-3deg); - } - 75% { - -webkit-transform: translate(0, 3px) rotate(-6deg); - transform: translate(0, 3px) rotate(-6deg); - } - 87.5% { - -webkit-transform: translate(-1px, 2px) rotate(-3deg); - transform: translate(-1px, 2px) rotate(-3deg); - } - 100% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } -} -@-webkit-keyframes ld-swim-px { - 0% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 12.5% { - -webkit-transform: translate(1px, -2px) rotate(3deg); - transform: translate(1px, -2px) rotate(3deg); - } - 25% { - -webkit-transform: translate(0, -3px) rotate(6deg); - transform: translate(0, -3px) rotate(6deg); - } - 37.5% { - -webkit-transform: translate(-1px, -2px) rotate(3deg); - transform: translate(-1px, -2px) rotate(3deg); - } - 50% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } - 62.5% { - -webkit-transform: translate(1px, 2px) rotate(-3deg); - transform: translate(1px, 2px) rotate(-3deg); - } - 75% { - -webkit-transform: translate(0, 3px) rotate(-6deg); - transform: translate(0, 3px) rotate(-6deg); - } - 87.5% { - -webkit-transform: translate(-1px, 2px) rotate(-3deg); - transform: translate(-1px, 2px) rotate(-3deg); - } - 100% { - -webkit-transform: translate(0, 0) rotate(0deg); - transform: translate(0, 0) rotate(0deg); - } -} -.ld.ld-swim-px { - -webkit-animation: ld-swim-px 3s infinite linear; - animation: ld-swim-px 3s infinite linear; -} -@keyframes ld-leaf-px { - 0% { - -webkit-transform: translate(-14.7px, -117px) rotate(-0.3deg); - transform: translate(-14.7px, -117px) rotate(-0.3deg); - } - 1% { - -webkit-transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); - } - 2% { - -webkit-transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); - transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); - } - 3% { - -webkit-transform: translate(-13.5px, -100.5px) rotate(-1.5deg); - transform: translate(-13.5px, -100.5px) rotate(-1.5deg); - } - 5% { - -webkit-transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); - } - 7% { - -webkit-transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); - } - 10% { - -webkit-transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); - transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); - } - 12% { - -webkit-transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); - transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); - } - 13% { - -webkit-transform: translate(14.7px, -75px) rotate(-29.7deg); - transform: translate(14.7px, -75px) rotate(-29.7deg); - } - 14% { - -webkit-transform: translate(15px, -75px) rotate(-30deg); - transform: translate(15px, -75px) rotate(-30deg); - } - 15% { - -webkit-transform: translate(14.399999999999999px, -69px) rotate(0.6deg); - transform: translate(14.399999999999999px, -69px) rotate(0.6deg); - } - 16% { - -webkit-transform: translate(13.8px, -58.5px) rotate(1.2deg); - transform: translate(13.8px, -58.5px) rotate(1.2deg); - } - 19% { - -webkit-transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); - transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); - } - 21% { - -webkit-transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); - } - 24% { - -webkit-transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); - transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); - } - 26% { - -webkit-transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); - transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); - } - 27% { - -webkit-transform: translate(-14.7px, -31.5px) rotate(29.7deg); - transform: translate(-14.7px, -31.5px) rotate(29.7deg); - } - 28% { - -webkit-transform: translate(-15px, -31.5px) rotate(30deg); - transform: translate(-15px, -31.5px) rotate(30deg); - } - 29% { - -webkit-transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); - } - 30% { - -webkit-transform: translate(-13.8px, -16.5px) rotate(-1.2deg); - transform: translate(-13.8px, -16.5px) rotate(-1.2deg); - } - 31% { - -webkit-transform: translate(-13.5px, -15px) rotate(-1.5deg); - transform: translate(-13.5px, -15px) rotate(-1.5deg); - } - 33% { - -webkit-transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); - } - 36% { - -webkit-transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); - } - 38% { - -webkit-transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); - transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); - } - 40% { - -webkit-transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); - transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); - } - 41% { - -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); - transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); - } - 42% { - -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); - transform: translate(15px, 10.500000000000002px) rotate(-30deg); - } - 43% { - -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); - transform: translate(15px, 10.500000000000002px) rotate(-30deg); - } - 43% { - -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); - transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); - } - 43% { - -webkit-transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); - transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); - } - 45% { - -webkit-transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); - transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); - } - 45% { - -webkit-transform: translate(13.5px, 27px) rotate(1.5deg); - transform: translate(13.5px, 27px) rotate(1.5deg); - } - 48% { - -webkit-transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); - transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); - } - 50% { - -webkit-transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); - } - 52% { - -webkit-transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); - transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); - } - 54% { - -webkit-transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); - transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); - } - 56% { - -webkit-transform: translate(-14.7px, 54px) rotate(29.7deg); - transform: translate(-14.7px, 54px) rotate(29.7deg); - } - 57% { - -webkit-transform: translate(-14.7px, 54px) rotate(-0.3deg); - transform: translate(-14.7px, 54px) rotate(-0.3deg); - } - 58% { - -webkit-transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); - } - 59% { - -webkit-transform: translate(-13.5px, 70.5px) rotate(-1.5deg); - transform: translate(-13.5px, 70.5px) rotate(-1.5deg); - } - 62% { - -webkit-transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); - } - 64% { - -webkit-transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); - } - 67% { - -webkit-transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); - transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); - } - 69% { - -webkit-transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); - transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); - } - 70% { - -webkit-transform: translate(14.7px, 96px) rotate(-29.7deg); - transform: translate(14.7px, 96px) rotate(-29.7deg); - } - 71% { - -webkit-transform: translate(15px, 96px) rotate(-30deg); - transform: translate(15px, 96px) rotate(-30deg); - } - 72% { - -webkit-transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); - transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); - } - 73% { - -webkit-transform: translate(13.8px, 111px) rotate(1.2deg); - transform: translate(13.8px, 111px) rotate(1.2deg); - } - 74% { - -webkit-transform: translate(13.5px, 112.5px) rotate(1.5deg); - transform: translate(13.5px, 112.5px) rotate(1.5deg); - } - 76% { - -webkit-transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); - transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); - } - 79% { - -webkit-transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); - } - 81% { - -webkit-transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); - transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); - } - 83% { - -webkit-transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); - transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); - } - 84% { - -webkit-transform: translate(-14.7px, 139.5px) rotate(29.7deg); - transform: translate(-14.7px, 139.5px) rotate(29.7deg); - } - 85% { - -webkit-transform: translate(-15px, 139.5px) rotate(30deg); - transform: translate(-15px, 139.5px) rotate(30deg); - } - 86% { - -webkit-transform: translate(-14.7px, 139.5px) rotate(-0.3deg); - transform: translate(-14.7px, 139.5px) rotate(-0.3deg); - } - 86% { - -webkit-transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); - } - 88% { - -webkit-transform: translate(-13.5px, 156px) rotate(-1.5deg); - transform: translate(-13.5px, 156px) rotate(-1.5deg); - } - 90% { - -webkit-transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); - } - 93% { - -webkit-transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); - } - 95% { - -webkit-transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); - transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); - } - 97% { - -webkit-transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); - transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); - } - 99% { - -webkit-transform: translate(14.7px, 181.5px) rotate(-29.7deg); - transform: translate(14.7px, 181.5px) rotate(-29.7deg); - } - 100% { - -webkit-transform: translate(15px, 181.5px) rotate(-30deg); - transform: translate(15px, 181.5px) rotate(-30deg); - } -} -@-webkit-keyframes ld-leaf-px { - 0% { - -webkit-transform: translate(-14.7px, -117px) rotate(-0.3deg); - transform: translate(-14.7px, -117px) rotate(-0.3deg); - } - 1% { - -webkit-transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); - } - 2% { - -webkit-transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); - transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); - } - 3% { - -webkit-transform: translate(-13.5px, -100.5px) rotate(-1.5deg); - transform: translate(-13.5px, -100.5px) rotate(-1.5deg); - } - 5% { - -webkit-transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); - } - 7% { - -webkit-transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); - } - 10% { - -webkit-transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); - transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); - } - 12% { - -webkit-transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); - transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); - } - 13% { - -webkit-transform: translate(14.7px, -75px) rotate(-29.7deg); - transform: translate(14.7px, -75px) rotate(-29.7deg); - } - 14% { - -webkit-transform: translate(15px, -75px) rotate(-30deg); - transform: translate(15px, -75px) rotate(-30deg); - } - 15% { - -webkit-transform: translate(14.399999999999999px, -69px) rotate(0.6deg); - transform: translate(14.399999999999999px, -69px) rotate(0.6deg); - } - 16% { - -webkit-transform: translate(13.8px, -58.5px) rotate(1.2deg); - transform: translate(13.8px, -58.5px) rotate(1.2deg); - } - 19% { - -webkit-transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); - transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); - } - 21% { - -webkit-transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); - } - 24% { - -webkit-transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); - transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); - } - 26% { - -webkit-transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); - transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); - } - 27% { - -webkit-transform: translate(-14.7px, -31.5px) rotate(29.7deg); - transform: translate(-14.7px, -31.5px) rotate(29.7deg); - } - 28% { - -webkit-transform: translate(-15px, -31.5px) rotate(30deg); - transform: translate(-15px, -31.5px) rotate(30deg); - } - 29% { - -webkit-transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); - } - 30% { - -webkit-transform: translate(-13.8px, -16.5px) rotate(-1.2deg); - transform: translate(-13.8px, -16.5px) rotate(-1.2deg); - } - 31% { - -webkit-transform: translate(-13.5px, -15px) rotate(-1.5deg); - transform: translate(-13.5px, -15px) rotate(-1.5deg); - } - 33% { - -webkit-transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); - } - 36% { - -webkit-transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); - } - 38% { - -webkit-transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); - transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); - } - 40% { - -webkit-transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); - transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); - } - 41% { - -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); - transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); - } - 42% { - -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); - transform: translate(15px, 10.500000000000002px) rotate(-30deg); - } - 43% { - -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); - transform: translate(15px, 10.500000000000002px) rotate(-30deg); - } - 43% { - -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); - transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); - } - 43% { - -webkit-transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); - transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); - } - 45% { - -webkit-transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); - transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); - } - 45% { - -webkit-transform: translate(13.5px, 27px) rotate(1.5deg); - transform: translate(13.5px, 27px) rotate(1.5deg); - } - 48% { - -webkit-transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); - transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); - } - 50% { - -webkit-transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); - } - 52% { - -webkit-transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); - transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); - } - 54% { - -webkit-transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); - transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); - } - 56% { - -webkit-transform: translate(-14.7px, 54px) rotate(29.7deg); - transform: translate(-14.7px, 54px) rotate(29.7deg); - } - 57% { - -webkit-transform: translate(-14.7px, 54px) rotate(-0.3deg); - transform: translate(-14.7px, 54px) rotate(-0.3deg); - } - 58% { - -webkit-transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); - } - 59% { - -webkit-transform: translate(-13.5px, 70.5px) rotate(-1.5deg); - transform: translate(-13.5px, 70.5px) rotate(-1.5deg); - } - 62% { - -webkit-transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); - } - 64% { - -webkit-transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); - } - 67% { - -webkit-transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); - transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); - } - 69% { - -webkit-transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); - transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); - } - 70% { - -webkit-transform: translate(14.7px, 96px) rotate(-29.7deg); - transform: translate(14.7px, 96px) rotate(-29.7deg); - } - 71% { - -webkit-transform: translate(15px, 96px) rotate(-30deg); - transform: translate(15px, 96px) rotate(-30deg); - } - 72% { - -webkit-transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); - transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); - } - 73% { - -webkit-transform: translate(13.8px, 111px) rotate(1.2deg); - transform: translate(13.8px, 111px) rotate(1.2deg); - } - 74% { - -webkit-transform: translate(13.5px, 112.5px) rotate(1.5deg); - transform: translate(13.5px, 112.5px) rotate(1.5deg); - } - 76% { - -webkit-transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); - transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); - } - 79% { - -webkit-transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); - transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); - } - 81% { - -webkit-transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); - transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); - } - 83% { - -webkit-transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); - transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); - } - 84% { - -webkit-transform: translate(-14.7px, 139.5px) rotate(29.7deg); - transform: translate(-14.7px, 139.5px) rotate(29.7deg); - } - 85% { - -webkit-transform: translate(-15px, 139.5px) rotate(30deg); - transform: translate(-15px, 139.5px) rotate(30deg); - } - 86% { - -webkit-transform: translate(-14.7px, 139.5px) rotate(-0.3deg); - transform: translate(-14.7px, 139.5px) rotate(-0.3deg); - } - 86% { - -webkit-transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); - transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); - } - 88% { - -webkit-transform: translate(-13.5px, 156px) rotate(-1.5deg); - transform: translate(-13.5px, 156px) rotate(-1.5deg); - } - 90% { - -webkit-transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); - transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); - } - 93% { - -webkit-transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); - transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); - } - 95% { - -webkit-transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); - transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); - } - 97% { - -webkit-transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); - transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); - } - 99% { - -webkit-transform: translate(14.7px, 181.5px) rotate(-29.7deg); - transform: translate(14.7px, 181.5px) rotate(-29.7deg); - } - 100% { - -webkit-transform: translate(15px, 181.5px) rotate(-30deg); - transform: translate(15px, 181.5px) rotate(-30deg); - } -} -.ld.ld-leaf-px { - -webkit-animation: ld-leaf-px 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); - animation: ld-leaf-px 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); -} -@keyframes ld-slot-px { - 0% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 9.09% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 9.1% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 16.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 17% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 23.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 23.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 29.59% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 29.6% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 34.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 34.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 38.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 38.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 41.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 41.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 44.39% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 44.4% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 46.29% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 46.3% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 47.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 47.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 48.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 48.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.39% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 49.4% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 49.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 50.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 50.59% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50.6% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 51.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 51.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 52.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 52.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 53.690000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 53.7% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 55.59% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 55.6% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 58.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 58.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 61.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 61.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 65.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 65.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 70.39% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 70.4% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 76.19% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 76.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 82.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 83% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 90.89% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 90.9% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 99.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 100% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } -} -@-webkit-keyframes ld-slot-px { - 0% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 9.09% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 9.1% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 16.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 17% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 23.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 23.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 29.59% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 29.6% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 34.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 34.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 38.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 38.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 41.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 41.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 44.39% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 44.4% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 46.29% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 46.3% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 47.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 47.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 48.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 48.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.39% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 49.4% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.79% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 49.8% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 49.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 50.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 50.59% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 50.6% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 51.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 51.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 52.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 52.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 53.690000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 53.7% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 55.59% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 55.6% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 58.190000000000005% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 58.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 61.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 61.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 65.49% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 65.5% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 70.39% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 70.4% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 76.19% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 76.2% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 82.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 83% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 90.89% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 90.9% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } - 99.99% { - -webkit-transform: translate(0, 100px); - transform: translate(0, 100px); - } - 100% { - -webkit-transform: translate(0, -100px); - transform: translate(0, -100px); - } -} -.ld.ld-slot-px { - -webkit-animation: ld-slot-px 6s infinite linear; - animation: ld-slot-px 6s infinite linear; -} diff --git a/build/lib/gradio/static/css/style.css b/build/lib/gradio/static/css/style.css deleted file mode 100644 index a9ec927984..0000000000 --- a/build/lib/gradio/static/css/style.css +++ /dev/null @@ -1,95 +0,0 @@ -body#lib { - font-family: 'Open Sans', sans-serif; - margin: 20px 0 0; - position: relative; - padding-bottom: 60px; -} -button, input[type="submit"], input[type="reset"], input[type="text"], input[type="button"], select[type="submit"] { - border: none; - font: inherit; - outline: inherit; - -webkit-appearance: none; -} -select { - font: inherit; -} -label, input[type=radio], input[type=checkbox], select, input[type=range], button, input[type="submit"], input[type="reset"], input[type="button"], select[type="submit"] { - cursor: pointer; -} - -.loading_time { - color: #e67e22; - text-align: right; - font-family: monospace; -} -.share { - text-align: center; - margin-bottom: 10px; - font-size: 14px; -} -.share-copy { - background-color: whitesmoke; - padding: 4px; - border-radius: 2px; -} -.title { - text-align: center; -} -.container { - max-width: 1028px; - width: 100%; - margin: 0 auto; - padding-left: 24px; - padding-right: 24px; - box-sizing: border-box; -} -.panels { - display: flex; - flex-flow: row; - flex-wrap: wrap; - justify-content: center; -} -button.primary { - color: white; - background-color: #e67e22; -} -button.secondary { - color: black; - background-color: #F6F6F6; -} -.examples table { - border-collapse: collapse; - font-family: monospace; - padding: 8px; - background-color: whitesmoke; - border-right: solid 4px whitesmoke; - border-left: solid 4px whitesmoke; - border-bottom: solid 4px whitesmoke; -} -.examples th { - padding: 8px 16px; - text-align: left; - font-size: 18px; -} -.examples td { - padding: 8px; - cursor: pointer; -} - -.examples tbody tr:nth-child(odd) { - background-color: white; -} -.examples tbody tr:hover { - background-color: lightgray; -} -#credit { - text-align: center; - position: absolute; - left: 0; - right: 0; - bottom: 18px; - height: 24px; -} -#credit img { - height: 24px; -} \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/cropper.min.css b/build/lib/gradio/static/css/vendor/cropper.min.css deleted file mode 100644 index 6bdccb8add..0000000000 --- a/build/lib/gradio/static/css/vendor/cropper.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Cropper.js v1.5.7 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2020-05-23T05:22:57.283Z - */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/icons.svg b/build/lib/gradio/static/css/vendor/icons.svg deleted file mode 100644 index cc8298ad0c..0000000000 --- a/build/lib/gradio/static/css/vendor/icons.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png b/build/lib/gradio/static/css/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index a2e6bfc085f51b392569e58b72d454586b900f61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq?iMILR?p^S|wQb`zMgg=jq}Y hQo)$KfKh^VF#`ir1OsEt!yO=<44$rjF6*2UngAlC6uAHZ diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_444444_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_444444_256x240.png deleted file mode 100644 index df4e37378517044e8d109e5682b0d411d2eff92e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3266 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 IM6N<$f@ur&%K!iX diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_777620_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_777620_256x240.png deleted file mode 100644 index ee49e9e501496827b5d632892a15f87535455af8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3262 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 diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_777777_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_777777_256x240.png deleted file mode 100644 index b01ff3deebd1fca16da650534e7e44abbe72cbf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3266 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 AyZ`_I diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_cc0000_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_cc0000_256x240.png deleted file mode 100644 index 8920193948f0642fb2e4e722b702bae4e26bfaf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3262 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 diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_ffffff_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_ffffff_256x240.png deleted file mode 100644 index 1cba4313d3b931df8231fd958084bb9dc27e31bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3264 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:0}.jexcel_container.fullscreen.with-toolbar{height:calc(100% - 46px)}.jexcel_content{display:inline-block;box-sizing:border-box;padding-right:3px;padding-bottom:3px;position:relative;scrollbar-width:thin;scrollbar-color:#666 transparent}@supports (-moz-appearance:none){.jexcel_content{padding-right:10px}}.jexcel_content::-webkit-scrollbar{width:5px;height:5px}.jexcel_content::-webkit-scrollbar-track{background:#eee}.jexcel_content::-webkit-scrollbar-thumb{background:#666}.jexcel{border-collapse:separate;table-layout:fixed;white-space:nowrap;empty-cells:show;border:0;background-color:#fff;width:0;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.jexcel>thead>tr>td{border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid transparent;border-bottom:1px solid transparent;background-color:#f3f3f3;padding:2px;cursor:pointer;box-sizing:border-box;overflow:hidden;position:-webkit-sticky;position:sticky;top:0;z-index:2}.with-toolbar .jexcel>thead>tr>td{top:42px}.jexcel>thead>tr>td.dragging{background-color:#fff;opacity:.5}.jexcel>thead>tr>td.selected{background-color:#dcdcdc}.jexcel>thead>tr>td.arrow-up{background-repeat:no-repeat;background-position:center right 5px;background-image:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 14l5-5 5 5H7z' fill='gray'/%3E%3C/svg%3E");text-decoration:underline}.jexcel>thead>tr>td.arrow-down{background-repeat:no-repeat;background-position:center right 5px;background-image:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='gray'/%3E%3C/svg%3E");text-decoration:underline}.jexcel>tbody>tr>td:first-child{position:relative;background-color:#f3f3f3;text-align:center}.jexcel>tbody.resizable>tr>td:first-child::before{content:'\00a0';width:100%;height:3px;position:absolute;bottom:0;left:0;cursor:row-resize}.jexcel>tbody.draggable>tr>td:first-child::after{content:'\00a0';width:3px;height:100%;position:absolute;top:0;right:0;cursor:move}.jexcel>tbody>tr.dragging>td{background-color:#eee;opacity:.5}.jexcel>tbody>tr>td{border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid transparent;border-bottom:1px solid transparent;padding:4px;white-space:nowrap;box-sizing:border-box;line-height:1em}.jexcel>tbody>tr>td:last-child{overflow:hidden}.jexcel>tbody>tr>td>img{display:inline-block;max-width:100px}.jexcel>tbody>tr>td.readonly{color:rgba(0,0,0,.3)}.jexcel>tbody>tr.selected>td:first-child{background-color:#dcdcdc}.jexcel>tbody>tr>td>input,.jexcel>tbody>tr>td>select,.jexcel>tbody>tr>td>textarea{border:0;border-radius:0;outline:0;width:100%;margin:0;padding:0;background-color:transparent;box-sizing:border-box}.jexcel>tbody>tr>td>textarea{resize:none;padding-top:6px!important}.jexcel>tbody>tr>td>input[type=checkbox]{width:12px;margin-top:2px}.jexcel>tbody>tr>td>input[type=radio]{width:12px;margin-top:2px}.jexcel>tbody>tr>td>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-repeat:no-repeat;background-position-x:100%;background-position-y:40%;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+)}.jexcel>tbody>tr>td.jexcel_dropdown{background-repeat:no-repeat;background-position:top 50% right 5px;background-image:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='lightgray'/%3E%3C/svg%3E");text-overflow:ellipsis;overflow-x:hidden}.jexcel>tbody>tr>td.jexcel_dropdown.jexcel_comments{background:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='lightgray'/%3E%3C/svg%3E") top 50% right 5px no-repeat,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFuGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTlhZDJmOC1kMDI2LTI1NDItODhjOS1iZTRkYjkyMmQ0MmQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkOGI5NDUyMS00ZjEwLWQ5NDktYjUwNC0wZmU1N2I3Nzk1MDEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIHN0RXZ0OndoZW49IjIwMTktMDEtMzFUMTg6NTU6MDhaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmExOWFkMmY4LWQwMjYtMjU0Mi04OGM5LWJlNGRiOTIyZDQyZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4En6MDAAAAX0lEQVQYlX3KOw6AIBBAwS32RpJADXfx0pTET+ERZJ8F8RODFtONsG0QAoh0CSDM82dqodaBdQXnfoLZQM7gPai+wjNNE8R4pTuAYNZSKZASqL7CMy0LxNgJp30fKYUDi3+vIqb/+rUAAAAASUVORK5CYII=) top right no-repeat}.jexcel>tbody>tr>td>.color{width:90%;height:10px;margin:auto}.jexcel>tbody>tr>td>a{text-decoration:underline}.jexcel>tbody>tr>td.highlight>a{color:#00f;cursor:pointer}.jexcel>tfoot>tr>td{border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid transparent;border-bottom:1px solid transparent;background-color:#f3f3f3;padding:2px;cursor:pointer;box-sizing:border-box;overflow:hidden}.jexcel .highlight{background-color:rgba(0,0,0,.05)}.jexcel .highlight-top{border-top:1px solid #000;box-shadow:0 -1px #ccc}.jexcel .highlight-left{border-left:1px solid #000;box-shadow:-1px 0 #ccc}.jexcel .highlight-right{border-right:1px solid #000}.jexcel .highlight-bottom{border-bottom:1px solid #000}.jexcel .highlight-top.highlight-left{box-shadow:-1px -1px #ccc;-webkit-box-shadow:-1px -1px #ccc;-moz-box-shadow:-1px -1px #ccc}.jexcel .highlight-selected{background-color:rgba(0,0,0,0)}.jexcel .selection{background-color:rgba(0,0,0,.05)}.jexcel .selection-left{border-left:1px dotted #000}.jexcel .selection-right{border-right:1px dotted #000}.jexcel .selection-top{border-top:1px dotted #000}.jexcel .selection-bottom{border-bottom:1px dotted #000}.jexcel_corner{position:absolute;background-color:#000;height:1px;width:1px;border:1px solid #fff;top:-2000px;left:-2000px;cursor:crosshair;box-sizing:initial;z-index:30;padding:2px}.jexcel .editor{outline:0 solid transparent;overflow:visible;white-space:nowrap;text-align:left;padding:0;box-sizing:border-box;overflow:visible!important}.jexcel .editor>input{padding-left:4px}.jexcel .editor .jupload{position:fixed;top:100%;z-index:40;user-select:none;-webkit-font-smoothing:antialiased;font-size:.875rem;letter-spacing:.2px;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);padding:10px;background-color:#fff;width:300px;min-height:225px;margin-top:2px}.jexcel .editor .jupload img{width:100%;height:auto}.jexcel .editor .jexcel_richtext{position:fixed;top:100%;z-index:40;user-select:none;-webkit-font-smoothing:antialiased;font-size:.875rem;letter-spacing:.2px;-webkit-box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);padding:10px;background-color:#fff;min-width:280px;max-width:310px;margin-top:2px;text-align:left}.jexcel .editor .jclose:after{position:absolute;top:0;right:0;margin:10px;content:'close';font-family:'Material icons';font-size:24px;width:24px;height:24px;line-height:24px;cursor:pointer;text-shadow:0 0 5px #fff}.jexcel,.jexcel td,.jexcel_corner{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;user-drag:none}.jexcel_textarea{position:absolute;top:-999px;left:-999px;width:1px;height:1px}.jexcel .dragline{position:absolute}.jexcel .dragline div{position:relative;top:-6px;height:5px;width:22px}.jexcel .dragline div:hover{cursor:move}.jexcel .onDrag{background-color:rgba(0,0,0,.6)}.jexcel .error{border:1px solid red}.jexcel thead td.resizing{border-right-style:dotted!important;border-right-color:red!important}.jexcel tbody tr.resizing>td{border-bottom-style:dotted!important;border-bottom-color:red!important}.jexcel tbody td.resizing{border-right-style:dotted!important;border-right-color:red!important}.jexcel .jdropdown-header{border:0!important;outline:0!important;width:100%!important;height:100%!important;padding:0!important;padding-left:8px!important}.jexcel .jdropdown-container{margin-top:1px}.jexcel .jdropdown-container-header{padding:0;margin:0;height:inherit}.jexcel .jdropdown-picker{border:0!important;padding:0!important;width:inherit;height:inherit}.jexcel .jexcel_comments{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFuGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTlhZDJmOC1kMDI2LTI1NDItODhjOS1iZTRkYjkyMmQ0MmQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkOGI5NDUyMS00ZjEwLWQ5NDktYjUwNC0wZmU1N2I3Nzk1MDEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIHN0RXZ0OndoZW49IjIwMTktMDEtMzFUMTg6NTU6MDhaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmExOWFkMmY4LWQwMjYtMjU0Mi04OGM5LWJlNGRiOTIyZDQyZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4En6MDAAAAX0lEQVQYlX3KOw6AIBBAwS32RpJADXfx0pTET+ERZJ8F8RODFtONsG0QAoh0CSDM82dqodaBdQXnfoLZQM7gPai+wjNNE8R4pTuAYNZSKZASqL7CMy0LxNgJp30fKYUDi3+vIqb/+rUAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:top right}.jexcel .sp-replacer{margin:2px;border:0}.jexcel>thead>tr.jexcel_filter>td>input{border:0;width:100%;outline:0}.jexcel_about{float:right;font-size:.7em;padding:2px;text-transform:uppercase;letter-spacing:1px;display:none}.jexcel_about a{color:#ccc;text-decoration:none}.jexcel_about img{display:none}.jexcel_filter{display:flex;justify-content:space-between;margin-bottom:4px}.jexcel_filter>div{padding:8px;align-items:center}.jexcel_pagination{display:flex;justify-content:space-between;align-items:center}.jexcel_pagination>div{display:flex;padding:10px}.jexcel_pagination>div:last-child{padding-right:10px;padding-top:10px}.jexcel_pagination>div>div{text-align:center;width:36px;height:36px;line-height:34px;border:1px solid #ccc;box-sizing:border-box;margin-left:2px;cursor:pointer}.jexcel_page{font-size:.8em}.jexcel_page_selected{font-weight:700;background-color:#f3f3f3}.jexcel_toolbar{display:flex;background-color:#f3f3f3;border:1px solid #ccc;padding:4px;margin:0 2px 4px 1px;position:sticky;top:0;z-index:21}.jexcel_toolbar:empty{display:none}.jexcel_toolbar i.jexcel_toolbar_item{width:24px;height:24px;padding:4px;cursor:pointer;display:inline-block}.jexcel_toolbar i.jexcel_toolbar_item:hover{background-color:#ddd}.jexcel_toolbar select.jexcel_toolbar_item{margin-left:2px;margin-right:2px;display:inline-block;border:0;background-color:transparent;padding-right:10px}.jexcel .dragging-left{background-repeat:no-repeat;background-position:top 50% left 0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M14 7l-5 5 5 5V7z'/%3E%3Cpath fill='none' d='M24 0v24H0V0h24z'/%3E%3C/svg%3E")}.jexcel .dragging-right{background-repeat:no-repeat;background-position:top 50% right 0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M10 17l5-5-5-5v10z'/%3E%3Cpath fill='none' d='M0 24V0h24v24H0z'/%3E%3C/svg%3E")}.jexcel_tabs .jexcel_tab{display:none}.jexcel_tabs .jexcel_tab_link{display:inline-block;padding:10px;padding-left:20px;padding-right:20px;margin-right:5px;margin-bottom:5px;background-color:#f3f3f3;cursor:pointer}.jexcel_tabs .jexcel_tab_link.selected{background-color:#ddd}.jexcel_hidden_index>colgroup>col:first-child,.jexcel_hidden_index>tbody>tr>td:first-child,.jexcel_hidden_index>thead>tr>td:first-child{display:none}.jexcel .jrating{display:inline-flex}.jexcel .jrating>div{zoom:.55}.jexcel .copying-top{border-top:1px dashed #000}.jexcel .copying-left{border-left:1px dashed #000}.jexcel .copying-right{border-right:1px dashed #000}.jexcel .copying-bottom{border-bottom:1px dashed #000}.jexcel .jexcel_column_filter{background-repeat:no-repeat;background-position:top 50% right 5px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='gray' width='18px' height='18px'%3E%3Cpath d='M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");text-overflow:ellipsis;overflow:hidden;padding:0;padding-left:6px;padding-right:20px}.jexcel thead .jexcel_freezed{left:0;z-index:3!important;box-shadow:2px 0 2px .2px #ccc!important;-webkit-box-shadow:2px 0 2px .2px #ccc!important;-moz-box-shadow:2px 0 2px .2px #ccc!important}.jexcel tbody .jexcel_freezed{position:relative;background-color:#fff;box-shadow:1px 1px 1px 1px #ccc!important;-webkit-box-shadow:2px 4px 4px .1px #ccc!important;-moz-box-shadow:2px 4px 4px .1px #ccc!important} \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/jquery-ui.css b/build/lib/gradio/static/css/vendor/jquery-ui.css deleted file mode 100644 index 7a779da47b..0000000000 --- a/build/lib/gradio/static/css/vendor/jquery-ui.css +++ /dev/null @@ -1,1315 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2016-09-14 -* http://jqueryui.com -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6 -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - filter:Alpha(Opacity=0); /* support: IE8 */ -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; - pointer-events: none; -} - - -/* Icons -----------------------------------*/ -.ui-icon { - display: inline-block; - vertical-align: middle; - margin-top: -.25em; - position: relative; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - -.ui-widget-icon-block { - left: 50%; - margin-left: -8px; - display: block; -} - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ui-accordion .ui-accordion-header { - display: block; - cursor: pointer; - position: relative; - margin: 2px 0 0 0; - padding: .5em .5em .5em .7em; - font-size: 100%; -} -.ui-accordion .ui-accordion-content { - padding: 1em 2.2em; - border-top: 0; - overflow: auto; -} -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} -.ui-menu { - list-style: none; - padding: 0; - margin: 0; - display: block; - outline: 0; -} -.ui-menu .ui-menu { - position: absolute; -} -.ui-menu .ui-menu-item { - margin: 0; - cursor: pointer; - /* support: IE10, see #8844 */ - list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); -} -.ui-menu .ui-menu-item-wrapper { - position: relative; - padding: 3px 1em 3px .4em; -} -.ui-menu .ui-menu-divider { - margin: 5px 0; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-state-focus, -.ui-menu .ui-state-active { - margin: -1px; -} - -/* icon support */ -.ui-menu-icons { - position: relative; -} -.ui-menu-icons .ui-menu-item-wrapper { - padding-left: 2em; -} - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: 0; - bottom: 0; - left: .2em; - margin: auto 0; -} - -/* right-aligned */ -.ui-menu .ui-menu-icon { - left: auto; - right: 0; -} -.ui-button { - padding: 0.25em 0.6em; - display: inline-block; - position: relative; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - /* Support: IE <= 11 */ - overflow: visible; -} - -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} - -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2em; - box-sizing: border-box; - text-indent: -9999px; - white-space: nowrap; -} - -/* no icon support for input elements */ -input.ui-button.ui-button-icon-only { - text-indent: 0; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon { - position: absolute; - top: 50%; - left: 50%; - margin-top: -8px; - margin-left: -8px; -} - -.ui-button.ui-icon-notext .ui-icon { - padding: 0; - width: 2.1em; - height: 2.1em; - text-indent: -9999px; - white-space: nowrap; - -} - -input.ui-button.ui-icon-notext .ui-icon { - width: auto; - height: auto; - text-indent: 0; - white-space: normal; - padding: .4em 1em; -} - -/* workarounds */ -/* Support: Firefox 5 - 40 */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.ui-controlgroup { - vertical-align: middle; - display: inline-block; -} -.ui-controlgroup > .ui-controlgroup-item { - float: left; - margin-left: 0; - margin-right: 0; -} -.ui-controlgroup > .ui-controlgroup-item:focus, -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { - z-index: 9999; -} -.ui-controlgroup-vertical > .ui-controlgroup-item { - display: block; - float: none; - width: 100%; - margin-top: 0; - margin-bottom: 0; - text-align: left; -} -.ui-controlgroup-vertical .ui-controlgroup-item { - box-sizing: border-box; -} -.ui-controlgroup .ui-controlgroup-label { - padding: .4em 1em; -} -.ui-controlgroup .ui-controlgroup-label span { - font-size: 80%; -} -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { - border-left: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { - border-top: none; -} -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { - border-right: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { - border-bottom: none; -} - -/* Spinner specific style fixes */ -.ui-controlgroup-vertical .ui-spinner-input { - - /* Support: IE8 only, Android < 4.4 only */ - width: 75%; - width: calc( 100% - 2.4em ); -} -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { - border-top-style: solid; -} - -.ui-checkboxradio-label .ui-icon-background { - border-radius: .12em; -} -.ui-checkboxradio-radio-label .ui-icon-background { - width: 16px; - height: 16px; - border-radius: 1em; - overflow: visible; - border: none; -} -.ui-checkboxradio-label .ui-icon-background { - border: solid 1px lightgray; -} -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { - background-image: none; - width: 8px; - height: 8px; - border-width: 5px; - border-style: solid; -} -.ui-checkboxradio-disabled { - pointer-events: none; -} -.ui-datepicker { - width: 17em; - padding: .2em .2em 0; - display: none; -} -.ui-datepicker .ui-datepicker-header { - position: relative; - padding: .2em 0; -} -.ui-datepicker .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-next { - position: absolute; - top: 2px; - width: 1.8em; - height: 1.8em; -} -.ui-datepicker .ui-datepicker-prev-hover, -.ui-datepicker .ui-datepicker-next-hover { - top: 1px; -} -.ui-datepicker .ui-datepicker-prev { - left: 2px; -} -.ui-datepicker .ui-datepicker-next { - right: 2px; -} -.ui-datepicker .ui-datepicker-prev-hover { - left: 1px; -} -.ui-datepicker .ui-datepicker-next-hover { - right: 1px; -} -.ui-datepicker .ui-datepicker-prev span, -.ui-datepicker .ui-datepicker-next span { - display: block; - position: absolute; - left: 50%; - margin-left: -8px; - top: 50%; - margin-top: -8px; -} -.ui-datepicker .ui-datepicker-title { - margin: 0 2.3em; - line-height: 1.8em; - text-align: center; -} -.ui-datepicker .ui-datepicker-title select { - font-size: 1em; - margin: 1px 0; -} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { - width: 45%; -} -.ui-datepicker table { - width: 100%; - font-size: .9em; - border-collapse: collapse; - margin: 0 0 .4em; -} -.ui-datepicker th { - padding: .7em .3em; - text-align: center; - font-weight: bold; - border: 0; -} -.ui-datepicker td { - border: 0; - padding: 1px; -} -.ui-datepicker td span, -.ui-datepicker td a { - display: block; - padding: .2em; - text-align: right; - text-decoration: none; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - margin: .7em 0 0 0; - padding: 0 .2em; - border-left: 0; - border-right: 0; - border-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: right; - margin: .5em .2em .4em; - cursor: pointer; - padding: .2em .6em .3em .6em; - width: auto; - overflow: visible; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: left; -} - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group { - float: left; -} -.ui-datepicker-multi .ui-datepicker-group table { - width: 95%; - margin: 0 auto .4em; -} -.ui-datepicker-multi-2 .ui-datepicker-group { - width: 50%; -} -.ui-datepicker-multi-3 .ui-datepicker-group { - width: 33.3%; -} -.ui-datepicker-multi-4 .ui-datepicker-group { - width: 25%; -} -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { - border-left-width: 0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - clear: left; -} -.ui-datepicker-row-break { - clear: both; - width: 100%; - font-size: 0; -} - -/* RTL support */ -.ui-datepicker-rtl { - direction: rtl; -} -.ui-datepicker-rtl .ui-datepicker-prev { - right: 2px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next { - left: 2px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-prev:hover { - right: 1px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next:hover { - left: 1px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane { - clear: right; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, -.ui-datepicker-rtl .ui-datepicker-group { - float: right; -} -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { - border-right-width: 0; - border-left-width: 1px; -} - -/* Icons */ -.ui-datepicker .ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; - left: .5em; - top: .3em; -} -.ui-dialog { - position: absolute; - top: 0; - left: 0; - padding: .2em; - outline: 0; -} -.ui-dialog .ui-dialog-titlebar { - padding: .4em 1em; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 0; - white-space: nowrap; - width: 90%; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 20px; - margin: -10px 0 0 0; - padding: 1px; - height: 20px; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background-image: none; - margin-top: .5em; - padding: .3em 1em .5em .4em; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-n { - height: 2px; - top: 0; -} -.ui-dialog .ui-resizable-e { - width: 2px; - right: 0; -} -.ui-dialog .ui-resizable-s { - height: 2px; - bottom: 0; -} -.ui-dialog .ui-resizable-w { - width: 2px; - left: 0; -} -.ui-dialog .ui-resizable-se, -.ui-dialog .ui-resizable-sw, -.ui-dialog .ui-resizable-ne, -.ui-dialog .ui-resizable-nw { - width: 7px; - height: 7px; -} -.ui-dialog .ui-resizable-se { - right: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-sw { - left: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-ne { - right: 0; - top: 0; -} -.ui-dialog .ui-resizable-nw { - left: 0; - top: 0; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-draggable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; - -ms-touch-action: none; - touch-action: none; -} -.ui-resizable-disabled .ui-resizable-handle, -.ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -} -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; -} -.ui-progressbar .ui-progressbar-overlay { - background: url("data:image/gif;base64,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"); - height: 100%; - filter: alpha(opacity=25); /* support: IE8 */ - opacity: 0.25; -} -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; -} -.ui-selectable { - -ms-touch-action: none; - touch-action: none; -} -.ui-selectable-helper { - position: absolute; - z-index: 100; - border: 1px dotted black; -} -.ui-selectmenu-menu { - padding: 0; - margin: 0; - position: absolute; - top: 0; - left: 0; - display: none; -} -.ui-selectmenu-menu .ui-menu { - overflow: auto; - overflow-x: hidden; - padding-bottom: 1px; -} -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { - font-size: 1em; - font-weight: bold; - line-height: 1.5; - padding: 2px 0.4em; - margin: 0.5em 0 0 0; - height: auto; - border: 0; -} -.ui-selectmenu-open { - display: block; -} -.ui-selectmenu-text { - display: block; - margin-right: 20px; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-selectmenu-button.ui-button { - text-align: left; - white-space: nowrap; - width: 14em; -} -.ui-selectmenu-icon.ui-icon { - float: right; - margin-top: 0; -} -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: default; - -ms-touch-action: none; - touch-action: none; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} - -/* support: IE8 - See #6727 */ -.ui-slider.ui-state-disabled .ui-slider-handle, -.ui-slider.ui-state-disabled .ui-slider-range { - filter: inherit; -} - -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} - -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -} -.ui-sortable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-spinner { - position: relative; - display: inline-block; - overflow: hidden; - padding: 0; - vertical-align: middle; -} -.ui-spinner-input { - border: none; - background: none; - color: inherit; - padding: .222em 0; - margin: .2em 0; - vertical-align: middle; - margin-left: .4em; - margin-right: 2em; -} -.ui-spinner-button { - width: 1.6em; - height: 50%; - font-size: .5em; - padding: 0; - margin: 0; - text-align: center; - position: absolute; - cursor: default; - display: block; - overflow: hidden; - right: 0; -} -/* more specificity required here to override default borders */ -.ui-spinner a.ui-spinner-button { - border-top-style: none; - border-bottom-style: none; - border-right-style: none; -} -.ui-spinner-up { - top: 0; -} -.ui-spinner-down { - bottom: 0; -} -.ui-tabs { - position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ - padding: .2em; -} -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 0; - margin: 1px .2em 0 0; - border-bottom-width: 0; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav .ui-tabs-anchor { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - margin-bottom: -1px; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { - cursor: text; -} -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { - cursor: pointer; -} -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - padding: 1em 1.4em; - background: none; -} -.ui-tooltip { - padding: 8px; - position: absolute; - z-index: 9999; - max-width: 300px; -} -body .ui-tooltip { - border-width: 2px; -} - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: inherit; - font-size: 1em; -} -.ui-widget .ui-widget { - font-size: 1em; -} -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - font-family: Arial,Helvetica,sans-serif; - font-size: 1em; -} -.ui-widget.ui-widget-content { - border: 1px solid #c5c5c5; -} -.ui-widget-content { - border: 1px solid #dddddd; - background: #ffffff; - color: #333333; -} -.ui-widget-content a { - color: #333333; -} -.ui-widget-header { - border: 1px solid #dddddd; - background: #e9e9e9; - color: #333333; - font-weight: bold; -} -.ui-widget-header a { - color: #333333; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default, -.ui-button, - -/* We use html here because we need a greater specificity to make sure disabled -works properly when clicked or hovered */ -html .ui-button.ui-state-disabled:hover, -html .ui-button.ui-state-disabled:active { - border: 1px solid lightgray; - background: white; - font-weight: normal; - color: #454545; -} -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited, -a.ui-button, -a:link.ui-button, -a:visited.ui-button, -.ui-button { - color: #454545; - text-decoration: none; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus, -.ui-button:hover, -.ui-button:focus { - border: 1px solid #cccccc; - background: #ededed; - font-weight: normal; - color: #2b2b2b; -} -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited, -a.ui-button:hover, -a.ui-button:focus { - color: #2b2b2b; - text-decoration: none; -} - -.ui-checkboxradio-label { - border: none !important; - background: none; -} - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - border: 1px solid #e67e22; - background: #e67e22; - font-weight: normal; - color: #ffffff; -} -.ui-icon-background, -.ui-state-active .ui-icon-background { - border: solid 1px #f39c12; - background-color: #ffffff; -} -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #ffffff; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #dad55e; - background: #fffa90; - color: #777620; -} -.ui-state-checked { - border: 1px solid #dad55e; - background: #fffa90; -} -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #777620; -} -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #f1a899; - background: #fddfdf; - color: #5f3f3f; -} -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #5f3f3f; -} -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #5f3f3f; -} -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - filter:Alpha(Opacity=70); /* support: IE8 */ - font-weight: normal; -} -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - filter:Alpha(Opacity=35); /* support: IE8 */ - background-image: none; -} -.ui-state-disabled .ui-icon { - filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("images/ui-icons_444444_256x240.png"); -} -.ui-widget-header .ui-icon { - background-image: url("images/ui-icons_444444_256x240.png"); -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon, -.ui-button:hover .ui-icon, -.ui-button:focus .ui-icon { - background-image: url("images/ui-icons_555555_256x240.png"); -} -.ui-state-active .ui-icon, -.ui-button:active .ui-icon { - background-image: url("images/ui-icons_ffffff_256x240.png"); -} -.ui-state-highlight .ui-icon, -.ui-button .ui-state-highlight.ui-icon { - background-image: url("images/ui-icons_777620_256x240.png"); -} -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("images/ui-icons_cc0000_256x240.png"); -} -.ui-button .ui-icon { - background-image: url("images/ui-icons_777777_256x240.png"); -} - -/* positioning */ -.ui-icon-blank { background-position: 16px 16px; } -.ui-icon-caret-1-n { background-position: 0 0; } -.ui-icon-caret-1-ne { background-position: -16px 0; } -.ui-icon-caret-1-e { background-position: -32px 0; } -.ui-icon-caret-1-se { background-position: -48px 0; } -.ui-icon-caret-1-s { background-position: -65px 0; } -.ui-icon-caret-1-sw { background-position: -80px 0; } -.ui-icon-caret-1-w { background-position: -96px 0; } -.ui-icon-caret-1-nw { background-position: -112px 0; } -.ui-icon-caret-2-n-s { background-position: -128px 0; } -.ui-icon-caret-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -65px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -65px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 1px -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 3px; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 3px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 3px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 3px; -} - -/* Overlays */ -.ui-widget-overlay { - background: #aaaaaa; - opacity: .003; - filter: Alpha(Opacity=.3); /* support: IE8 */ -} -.ui-widget-shadow { - -webkit-box-shadow: 0px 0px 5px #666666; - box-shadow: 0px 0px 5px #666666; -} diff --git a/build/lib/gradio/static/css/vendor/jsonTree.css b/build/lib/gradio/static/css/vendor/jsonTree.css deleted file mode 100644 index 4e1a6575f7..0000000000 --- a/build/lib/gradio/static/css/vendor/jsonTree.css +++ /dev/null @@ -1,115 +0,0 @@ -/* - * JSON Tree Viewer - * http://github.com/summerstyle/jsonTreeViewer - * - * Copyright 2017 Vera Lobacheva (http://iamvera.com) - * Released under the MIT license (LICENSE.txt) - */ - -/* Background for the tree. May use for element */ -.jsontree_bg { - background: #FFF; -} - -/* Styles for the container of the tree (e.g. fonts, margins etc.) */ -.jsontree_tree { - font-family: 'PT Mono', monospace; - font-size: 14px; - padding-left: 0; -} - -.jsontree_tree ul { - padding-left: 20px; -} - -.jsontree_tree li { - list-style: none; -} - - -/* Styles for a list of child nodes */ -.jsontree_child-nodes { - display: none; - margin-bottom: 5px; - line-height: 2; -} -.jsontree_node_expanded > .jsontree_value-wrapper > .jsontree_value > .jsontree_child-nodes { - display: block; -} - -/* Styles for labels */ -.jsontree_label-wrapper { - float: left; - margin-right: 8px; -} -.jsontree_label { - font-weight: normal; - vertical-align: top; - color: #000; - position: relative; - padding: 1px; - border-radius: 4px; - cursor: default; -} -.jsontree_node_marked > .jsontree_label-wrapper > .jsontree_label { - background: #fff2aa; -} - -/* Styles for values */ -.jsontree_value-wrapper { - display: block; - overflow: hidden; -} -.jsontree_node_complex > .jsontree_value-wrapper { - overflow: inherit; -} -.jsontree_value { - vertical-align: top; - display: inline; -} -.jsontree_value_null { - color: #777; - font-weight: bold; -} -.jsontree_value_string { - color: #025900; - font-weight: bold; -} -.jsontree_value_number { - color: #000E59; - font-weight: bold; -} -.jsontree_value_boolean { - color: #600100; - font-weight: bold; -} - -/* Styles for active elements */ -.jsontree_expand-button { - position: absolute; - top: 3px; - left: -15px; - display: block; - width: 11px; - height: 11px; - background-image: url('icons.svg'); -} -.jsontree_node_expanded > .jsontree_label-wrapper > .jsontree_label > .jsontree_expand-button { - background-position: 0 -11px; -} -.jsontree_show-more { - cursor: pointer; -} -.jsontree_node_expanded > .jsontree_value-wrapper > .jsontree_value > .jsontree_show-more { - display: none; -} -.jsontree_node_empty > .jsontree_label-wrapper > .jsontree_label > .jsontree_expand-button, -.jsontree_node_empty > .jsontree_value-wrapper > .jsontree_value > .jsontree_show-more { - display: none !important; -} -.jsontree_node_complex > .jsontree_label-wrapper > .jsontree_label { - cursor: pointer; -} -.jsontree_node_empty > .jsontree_label-wrapper > .jsontree_label { - cursor: default !important; -} diff --git a/setup.py b/setup.py index 2a1ea3fd12..0406a00ffb 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ except ImportError: setup( name='gradio', - version='1.1.8.1', + version='1.1.9', include_package_data=True, description='Python library for easily interacting with trained machine learning models', author='Abubakar Abid', From 4b23f68d8e34cd0e82ea7bf4d00772f0412e2213 Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Mon, 31 Aug 2020 18:35:28 -0500 Subject: [PATCH 14/14] updated PyPi version --- build/lib/gradio/component.py | 52 + build/lib/gradio/inputs.py | 603 ++ build/lib/gradio/interface.py | 420 + build/lib/gradio/networking.py | 265 + build/lib/gradio/outputs.py | 389 + build/lib/gradio/processing_utils.py | 156 + .../gradio/static/apple-app-site-association | 11 + build/lib/gradio/static/css/gradio.css | 127 + .../css/interfaces/input/checkbox_group.css | 20 + .../static/css/interfaces/input/dropdown.css | 7 + .../static/css/interfaces/input/file.css | 15 + .../static/css/interfaces/input/image.css | 104 + .../css/interfaces/input/microphone.css | 52 + .../static/css/interfaces/input/radio.css | 15 + .../static/css/interfaces/input/sketchpad.css | 53 + .../static/css/interfaces/input/slider.css | 15 + .../static/css/interfaces/input/textbox.css | 16 + .../static/css/interfaces/input/webcam.css | 20 + .../static/css/interfaces/output/audio.css | 15 + .../interfaces/output/highlighted_text.css | 22 + .../static/css/interfaces/output/html.css | 15 + .../static/css/interfaces/output/image.css | 13 + .../static/css/interfaces/output/json.css | 0 .../css/interfaces/output/key_values.css | 13 + .../static/css/interfaces/output/label.css | 48 + .../static/css/interfaces/output/textbox.css | 15 + build/lib/gradio/static/css/loading.css | 6875 +++++++++++++++++ build/lib/gradio/static/css/style.css | 95 + .../gradio/static/css/vendor/cropper.min.css | 9 + build/lib/gradio/static/css/vendor/icons.svg | 1 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 86 bytes .../vendor/images/ui-icons_444444_256x240.png | Bin 0 -> 3266 bytes .../vendor/images/ui-icons_555555_256x240.png | Bin 0 -> 3274 bytes .../vendor/images/ui-icons_777620_256x240.png | Bin 0 -> 3262 bytes .../vendor/images/ui-icons_777777_256x240.png | Bin 0 -> 3266 bytes .../vendor/images/ui-icons_cc0000_256x240.png | Bin 0 -> 3262 bytes .../vendor/images/ui-icons_ffffff_256x240.png | Bin 0 -> 3264 bytes .../gradio/static/css/vendor/jexcel.min.css | 1 + .../gradio/static/css/vendor/jquery-ui.css | 1315 ++++ .../lib/gradio/static/css/vendor/jsonTree.css | 115 + gradio.egg-info/PKG-INFO | 2 +- 41 files changed, 10893 insertions(+), 1 deletion(-) create mode 100644 build/lib/gradio/component.py create mode 100644 build/lib/gradio/inputs.py create mode 100644 build/lib/gradio/interface.py create mode 100644 build/lib/gradio/networking.py create mode 100644 build/lib/gradio/outputs.py create mode 100644 build/lib/gradio/processing_utils.py create mode 100644 build/lib/gradio/static/apple-app-site-association create mode 100644 build/lib/gradio/static/css/gradio.css create mode 100644 build/lib/gradio/static/css/interfaces/input/checkbox_group.css create mode 100644 build/lib/gradio/static/css/interfaces/input/dropdown.css create mode 100644 build/lib/gradio/static/css/interfaces/input/file.css create mode 100644 build/lib/gradio/static/css/interfaces/input/image.css create mode 100644 build/lib/gradio/static/css/interfaces/input/microphone.css create mode 100644 build/lib/gradio/static/css/interfaces/input/radio.css create mode 100644 build/lib/gradio/static/css/interfaces/input/sketchpad.css create mode 100644 build/lib/gradio/static/css/interfaces/input/slider.css create mode 100644 build/lib/gradio/static/css/interfaces/input/textbox.css create mode 100644 build/lib/gradio/static/css/interfaces/input/webcam.css create mode 100644 build/lib/gradio/static/css/interfaces/output/audio.css create mode 100644 build/lib/gradio/static/css/interfaces/output/highlighted_text.css create mode 100644 build/lib/gradio/static/css/interfaces/output/html.css create mode 100644 build/lib/gradio/static/css/interfaces/output/image.css create mode 100644 build/lib/gradio/static/css/interfaces/output/json.css create mode 100644 build/lib/gradio/static/css/interfaces/output/key_values.css create mode 100644 build/lib/gradio/static/css/interfaces/output/label.css create mode 100644 build/lib/gradio/static/css/interfaces/output/textbox.css create mode 100644 build/lib/gradio/static/css/loading.css create mode 100644 build/lib/gradio/static/css/style.css create mode 100644 build/lib/gradio/static/css/vendor/cropper.min.css create mode 100644 build/lib/gradio/static/css/vendor/icons.svg create mode 100644 build/lib/gradio/static/css/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_444444_256x240.png create mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_555555_256x240.png create mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_777620_256x240.png create mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_777777_256x240.png create mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_cc0000_256x240.png create mode 100644 build/lib/gradio/static/css/vendor/images/ui-icons_ffffff_256x240.png create mode 100644 build/lib/gradio/static/css/vendor/jexcel.min.css create mode 100644 build/lib/gradio/static/css/vendor/jquery-ui.css create mode 100644 build/lib/gradio/static/css/vendor/jsonTree.css diff --git a/build/lib/gradio/component.py b/build/lib/gradio/component.py new file mode 100644 index 0000000000..4474cbf4e8 --- /dev/null +++ b/build/lib/gradio/component.py @@ -0,0 +1,52 @@ +class Component(): + """ + A class for defining the methods that all gradio input and output components should have. + """ + + def __init__(self, label): + self.label = label + + def get_template_context(self): + """ + :return: a dictionary with context variables for the javascript file associated with the context + """ + return {"label": self.label} + + def preprocess(self, x): + """ + Any preprocessing needed to be performed on function input. + """ + return x + + def postprocess(self, y): + """ + Any postprocessing needed to be performed on function output. + """ + return y + + def process_example(self, example): + """ + Proprocess example for UI + """ + return example + + @classmethod + def get_shortcut_implementations(cls): + """ + Return dictionary of shortcut implementations + """ + return {} + + def rebuild(self, dir, data): + """ + All interfaces should define a method that rebuilds the flagged input when it's passed back (i.e. rebuilds image from base64) + """ + return data + + @classmethod + def get_all_shortcut_implementations(cls): + shortcuts = {} + for sub_cls in cls.__subclasses__(): + for shortcut, parameters in sub_cls.get_shortcut_implementations().items(): + shortcuts[shortcut] = (sub_cls, parameters) + return shortcuts diff --git a/build/lib/gradio/inputs.py b/build/lib/gradio/inputs.py new file mode 100644 index 0000000000..76f0e921cb --- /dev/null +++ b/build/lib/gradio/inputs.py @@ -0,0 +1,603 @@ +""" +This module defines various classes that can serve as the `input` to an interface. Each class must inherit from +`InputComponent`, and each class must define a path to its template. All of the subclasses of `InputComponent` are +automatically added to a registry, which allows them to be easily referenced in other parts of the code. +""" + +import datetime +import json +import os +import time +import warnings +from gradio.component import Component + +import base64 +import numpy as np +import PIL +import scipy.io.wavfile +from gradio import processing_utils, test_data +import pandas as pd +import math +import tempfile + + +class InputComponent(Component): + """ + Input Component. All input components subclass this. + """ + pass + + +class Textbox(InputComponent): + """ + Component creates a textbox for user to enter input. Provides a string (or number is `type` is "float") as an argument to the wrapped function. + Input type: str + """ + + def __init__(self, lines=1, placeholder=None, default=None, numeric=False, type="str", label=None): + """ + Parameters: + lines (int): number of line rows to provide in textarea. + placeholder (str): placeholder hint to provide behind textarea. + default (str): default text to provide in textarea. + numeric (bool): DEPRECATED. Whether the input should be parsed as a number instead of a string. + type (str): Type of value to be returned by component. "str" returns a string, "number" returns a float value. + label (str): component name in interface. + """ + self.lines = lines + self.placeholder = placeholder + self.default = default + if numeric: + warnings.warn("The 'numeric' parameter has been deprecated. Set parameter 'type' to 'number' instead.", DeprecationWarning) + self.type = "number" + else: + self.type = type + if default is None: + self.test_input = { + "str": "the quick brown fox jumped over the lazy dog", + "number": 786.92, + }[type] + else: + self.test_input = default + super().__init__(label) + + def get_template_context(self): + return { + "lines": self.lines, + "placeholder": self.placeholder, + "default": self.default, + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "text": {}, + "textbox": {"lines": 7}, + "number": {"type": "number"} + } + + def preprocess(self, x): + if self.type == "str": + return x + elif self.type == "number": + return float(x) + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'str', 'number'.") + + +class Slider(InputComponent): + """ + Component creates a slider that ranges from `minimum` to `maximum`. Provides a number as an argument to the wrapped function. + Input type: float + """ + + def __init__(self, minimum=0, maximum=100, step=None, default=None, label=None): + ''' + Parameters: + minimum (float): minimum value for slider. + maximum (float): maximum value for slider. + step (float): increment between slider values. + default (float): default value. + label (str): component name in interface. + ''' + self.minimum = minimum + self.maximum = maximum + if step is None: + difference = maximum - minimum + power = math.floor(math.log10(difference) - 1) + step = 10 ** power + self.step = step + self.default = minimum if default is None else default + self.test_input = self.default + super().__init__(label) + + def get_template_context(self): + return { + "minimum": self.minimum, + "maximum": self.maximum, + "step": self.step, + "default": self.default, + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "slider": {}, + } + + +class Checkbox(InputComponent): + """ + Component creates a checkbox that can be set to `True` or `False`. Provides a boolean as an argument to the wrapped function. + Input type: bool + """ + + def __init__(self, label=None): + """ + Parameters: + label (str): component name in interface. + """ + self.test_input = True + super().__init__(label) + + @classmethod + def get_shortcut_implementations(cls): + return { + "checkbox": {}, + } + + +class CheckboxGroup(InputComponent): + """ + Component creates a set of checkboxes of which a subset can be selected. Provides a list of strings representing the selected choices as an argument to the wrapped function. + Input type: Union[List[str], List[int]] + """ + + def __init__(self, choices, type="value", label=None): + ''' + Parameters: + choices (List[str]): list of options to select from. + type (str): Type of value to be returned by component. "value" returns the list of strings of the choices selected, "index" returns the list of indicies of the choices selected. + label (str): component name in interface. + ''' + self.choices = choices + self.type = type + self.test_input = self.choices + super().__init__(label) + + def get_template_context(self): + return { + "choices": self.choices, + **super().get_template_context() + } + + def preprocess(self, x): + if self.type == "value": + return x + elif self.type == "index": + return [self.choices.index(choice) for choice in x] + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") + + +class Radio(InputComponent): + """ + Component creates a set of radio buttons of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. + Input type: Union[str, int] + """ + + def __init__(self, choices, type="value", label=None): + ''' + Parameters: + choices (List[str]): list of options to select from. + type (str): Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. + label (str): component name in interface. + ''' + self.choices = choices + self.type = type + self.test_input = self.choices[0] + super().__init__(label) + + def get_template_context(self): + return { + "choices": self.choices, + **super().get_template_context() + } + + def preprocess(self, x): + if self.type == "value": + return x + elif self.type == "index": + return self.choices.index(x) + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") + + +class Dropdown(InputComponent): + """ + Component creates a dropdown of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. + Input type: Union[str, int] + """ + + def __init__(self, choices, type="value", label=None): + ''' + Parameters: + choices (List[str]): list of options to select from. + type (str): Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. + label (str): component name in interface. + ''' + self.choices = choices + self.type = type + self.test_input = self.choices[0] + super().__init__(label) + + def get_template_context(self): + return { + "choices": self.choices, + **super().get_template_context() + } + + def preprocess(self, x): + if self.type == "value": + return x + elif self.type == "index": + return self.choices.index(x) + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'value', 'index'.") + + +class Image(InputComponent): + """ + Component creates an image upload box with editing capabilities. + Input type: Union[numpy.array, PIL.Image, str] + """ + + def __init__(self, shape=None, image_mode='RGB', invert_colors=False, source="upload", tool="editor", type="numpy", label=None): + ''' + Parameters: + shape (Tuple[int, int]): shape to crop and resize image to; if None, matches input image size. + image_mode (str): "RGB" if color, or "L" if black and white. + invert_colors (bool): whether to invert the image as a preprocessing step. + source (str): Source of image. "upload" creates a box where user can drop an image file, "webcam" allows user to take snapshot from their webcam, "canvas" defaults to a white image that can be edited and drawn upon with tools. + tool (str): Tools used for editing. "editor" allows a full screen editor, "select" provides a cropping and zoom tool. + type (str): Type of value to be returned by component. "numpy" returns a numpy array with shape (width, height, 3) and values from 0 to 255, "pil" returns a PIL image object, "file" returns a temporary file object whose path can be retrieved by file_obj.name. + label (str): component name in interface. + ''' + self.shape = shape + self.image_mode = image_mode + self.source = source + self.tool = tool + self.type = type + self.invert_colors = invert_colors + self.test_input = test_data.BASE64_IMAGE + super().__init__(label) + + @classmethod + def get_shortcut_implementations(cls): + return { + "image": {}, + "webcam": {"source": "webcam"}, + "sketchpad": {"image_mode": "L", "source": "canvas", "shape": (28, 28), "invert_colors": True}, + } + + def get_template_context(self): + return { + "image_mode": self.image_mode, + "source": self.source, + "tool": self.tool, + **super().get_template_context() + } + + def preprocess(self, x): + im = processing_utils.decode_base64_to_image(x) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + im = im.convert(self.image_mode) + if self.shape is not None: + im = processing_utils.resize_and_crop( + im, (self.shape[0], self.shape[1])) + if self.invert_colors: + im = PIL.ImageOps.invert(im) + if self.type == "pil": + return im + elif self.type == "numpy": + return np.array(im) + elif self.type == "file": + file_obj = tempfile.NamedTemporaryFile() + im.save(file_obj.name) + return file_obj + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'pil', 'file'.") + + def process_example(self, example): + if os.path.exists(example): + return processing_utils.encode_file_to_base64(example) + else: + return example + + def rebuild(self, dir, data): + """ + Default rebuild method to decode a base64 image + """ + im = processing_utils.decode_base64_to_image(data) + timestamp = datetime.datetime.now() + filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.png' + im.save(f'{dir}/{filename}', 'PNG') + return filename + + +class Audio(InputComponent): + """ + Component accepts audio input files. + Input type: Union[Tuple[int, numpy.array], str, numpy.array] + """ + + def __init__(self, source="upload", type="numpy", label=None): + """ + Parameters: + source (str): Source of audio. "upload" creates a box where user can drop an audio file, "microphone" creates a microphone input. + type (str): Type of value to be returned by component. "numpy" returns a 2-set tuple with an integer sample_rate and the data numpy.array of shape (samples, 2), "file" returns a temporary file object whose path can be retrieved by file_obj.name, "mfcc" returns the mfcc coefficients of the input audio. + label (str): component name in interface. + """ + self.source = source + self.type = type + self.test_input = test_data.BASE64_AUDIO + super().__init__(label) + + def get_template_context(self): + return { + "source": self.source, + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "audio": {}, + "microphone": {"source": "microphone"} + } + + def preprocess(self, x): + """ + By default, no pre-processing is applied to a microphone input file + """ + file_obj = processing_utils.decode_base64_to_file(x) + if self.type == "file": + return file_obj + elif self.type == "numpy": + return scipy.io.wavfile.read(file_obj.name) + elif self.type == "mfcc": + return processing_utils.generate_mfcc_features_from_audio_file(file_obj.name) + + +class File(InputComponent): + """ + Component accepts generic file uploads. + Input type: Union[str, bytes] + """ + + def __init__(self, type="file", label=None): + ''' + Parameters: + type (str): Type of value to be returned by component. "file" returns a temporary file object whose path can be retrieved by file_obj.name, "binary" returns an bytes object. + label (str): component name in interface. + ''' + self.type = type + self.test_input = None + super().__init__(label) + + @classmethod + def get_shortcut_implementations(cls): + return { + "file": {}, + } + + def preprocess(self, x): + if self.type == "file": + return processing_utils.decode_base64_to_file(x) + elif self.type == "bytes": + return processing_utils.decode_base64_to_binary(x) + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'file', 'bytes'.") + + +class Dataframe(InputComponent): + """ + Component accepts 2D input through a spreadsheet interface. + Input type: Union[pandas.DataFrame, numpy.array, List[Union[str, float]], List[List[Union[str, float]]]] + """ + + def __init__(self, headers=None, row_count=3, col_count=3, datatype="str", type="pandas", label=None): + """ + Parameters: + headers (List[str]): Header names to dataframe. + row_count (int): Limit number of rows for input. + col_count (int): Limit number of columns for input. If equal to 1, return data will be one-dimensional. Ignored if `headers` is provided. + datatype (Union[str, List[str]]): Datatype of values in sheet. Can be provided per column as a list of strings, or for the entire sheet as a single string. Valid datatypes are "str", "number", "bool", and "date". + type (str): Type of value to be returned by component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for a Python array. + label (str): component name in interface. + """ + self.headers = headers + self.datatype = datatype + self.row_count = row_count + self.col_count = len(headers) if headers else col_count + self.type = type + sample_values = {"str": "abc", "number": 786, "bool": True, "date": "02/08/1993"} + column_dtypes = [datatype]*self.col_count if isinstance(datatype, str) else datatype + self.test_input = [[sample_values[c] for c in column_dtypes] for _ in range(row_count)] + + super().__init__(label) + + def get_template_context(self): + return { + "headers": self.headers, + "datatype": self.datatype, + "row_count": self.row_count, + "col_count": self.col_count, + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "dataframe": {"type": "pandas"}, + "numpy": {"type": "numpy"}, + "matrix": {"type": "array"}, + "list": {"type": "array", "col_count": 1}, + } + + def preprocess(self, x): + if self.type == "pandas": + if self.headers: + return pd.DataFrame(x, columns=self.headers) + else: + return pd.DataFrame(x) + if self.col_count == 1: + x = x[0] + if self.type == "numpy": + return np.array(x) + elif self.type == "array": + return x + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'pandas', 'numpy', 'array'.") + +####################### +# DEPRECATED COMPONENTS +####################### + +class Sketchpad(InputComponent): + """ + DEPRECATED. Component creates a sketchpad for black and white illustration. Provides numpy array of shape `(width, height)` as an argument to the wrapped function. + Input type: numpy.array + """ + + def __init__(self, shape=(28, 28), invert_colors=True, + flatten=False, label=None): + ''' + Parameters: + shape (Tuple[int, int]): shape to crop and resize image to. + invert_colors (bool): whether to represent black as 1 and white as 0 in the numpy array. + flatten (bool): whether to reshape the numpy array to a single dimension. + label (str): component name in interface. + ''' + warnings.warn("Sketchpad has been deprecated. Please use 'Image' component to generate a sketchpad. The string shorcut 'sketchpad' has been moved to the Image component.", DeprecationWarning) + self.image_width = shape[0] + self.image_height = shape[1] + self.invert_colors = invert_colors + self.flatten = flatten + super().__init__(label) + + def preprocess(self, x): + """ + Default preprocessing method for the SketchPad is to convert the sketch to black and white and resize 28x28 + """ + im_transparent = processing_utils.decode_base64_to_image(x) + # Create a white background for the alpha channel + im = PIL.Image.new("RGBA", im_transparent.size, "WHITE") + im.paste(im_transparent, (0, 0), im_transparent) + im = im.convert('L') + if self.invert_colors: + im = PIL.ImageOps.invert(im) + im = im.resize((self.image_width, self.image_height)) + if self.flatten: + array = np.array(im).flatten().reshape( + 1, self.image_width * self.image_height) + else: + array = np.array(im).flatten().reshape( + 1, self.image_width, self.image_height) + return array + + def process_example(self, example): + return processing_utils.encode_file_to_base64(example) + + def rebuild(self, dir, data): + """ + Default rebuild method to decode a base64 image + """ + im = processing_utils.decode_base64_to_image(data) + timestamp = datetime.datetime.now() + filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.png' + im.save(f'{dir}/{filename}', 'PNG') + return filename + + +class Webcam(InputComponent): + """ + DEPRECATED. Component creates a webcam for captured image input. Provides numpy array of shape `(width, height, 3)` as an argument to the wrapped function. + Input type: numpy.array + """ + + def __init__(self, shape=(224, 224), label=None): + ''' + Parameters: + shape (Tuple[int, int]): shape to crop and resize image to. + label (str): component name in interface. + ''' + warnings.warn("Webcam has been deprecated. Please use 'Image' component to generate a webcam. The string shorcut 'webcam' has been moved to the Image component.", DeprecationWarning) + self.image_width = shape[0] + self.image_height = shape[1] + self.num_channels = 3 + super().__init__(label) + + def preprocess(self, x): + """ + Default preprocessing method for is to convert the picture to black and white and resize to be 48x48 + """ + im = processing_utils.decode_base64_to_image(x) + im = im.convert('RGB') + im = processing_utils.resize_and_crop( + im, (self.image_width, self.image_height)) + return np.array(im) + + def rebuild(self, dir, data): + """ + Default rebuild method to decode a base64 image + """ + im = processing_utils.decode_base64_to_image(data) + timestamp = datetime.datetime.now() + filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.png' + im.save('{}/{}'.format(dir, filename), 'PNG') + return filename + + +class Microphone(InputComponent): + """ + DEPRECATED. Component creates a microphone element for audio inputs. + Input type: numpy.array + """ + + def __init__(self, preprocessing=None, label=None): + ''' + Parameters: + preprocessing (Union[str, Callable]): preprocessing to apply to input + label (str): component name in interface. + ''' + warnings.warn("Microphone has been deprecated. Please use 'Audio' component to generate a microphone. The string shorcut 'microphone' has been moved to the Audio component.", DeprecationWarning) + super().__init__(label) + if preprocessing is None or preprocessing == "mfcc": + self.preprocessing = preprocessing + else: + raise ValueError( + "unexpected value for preprocessing", preprocessing) + + def preprocess(self, x): + """ + By default, no pre-processing is applied to a microphone input file + """ + file_obj = processing_utils.decode_base64_to_file(x) + if self.preprocessing == "mfcc": + return processing_utils.generate_mfcc_features_from_audio_file(file_obj.name) + _, signal = scipy.io.wavfile.read(file_obj.name) + return signal + + + def rebuild(self, dir, data): + inp = data.split(';')[1].split(',')[1] + wav_obj = base64.b64decode(inp) + timestamp = datetime.datetime.now() + filename = f'input_{timestamp.strftime("%Y-%m-%d-%H-%M-%S")}.wav' + with open("{}/{}".format(dir, filename), "wb+") as f: + f.write(wav_obj) + return filename diff --git a/build/lib/gradio/interface.py b/build/lib/gradio/interface.py new file mode 100644 index 0000000000..d83d2de2cc --- /dev/null +++ b/build/lib/gradio/interface.py @@ -0,0 +1,420 @@ +""" +This is the core file in the `gradio` package, and defines the Interface class, including methods for constructing the +interface using the input and output types. +""" + +import tempfile +import webbrowser + +from gradio.inputs import InputComponent +from gradio.outputs import OutputComponent +from gradio import networking, strings, utils +from distutils.version import StrictVersion +import pkg_resources +import requests +import random +import time +import inspect +from IPython import get_ipython +import sys +import weakref +import analytics +import os + +PKG_VERSION_URL = "https://gradio.app/api/pkg-version" +analytics.write_key = "uxIFddIEuuUcFLf9VgH2teTEtPlWdkNy" +analytics_url = 'https://api.gradio.app/' +try: + ip_address = requests.get('https://api.ipify.org').text +except requests.ConnectionError: + ip_address = "No internet connection" + + +class Interface: + """ + Interfaces are created with Gradio using the `gradio.Interface()` function. + """ + instances = weakref.WeakSet() + + @classmethod + def get_instances(cls): + """ + :return: list of all current instances. + """ + return list( + Interface.instances) + + def __init__(self, fn, inputs, outputs, verbose=False, examples=None, + live=False, show_input=True, show_output=True, + capture_session=False, title=None, description=None, + thumbnail=None, server_port=None, server_name=networking.LOCALHOST_NAME, + allow_screenshot=True, allow_flagging=True, + flagging_dir="flagged", analytics_enabled=True): + + """ + Parameters: + fn (Callable): the function to wrap an interface around. + inputs (Union[str, List[Union[str, InputComponent]]]): a single Gradio input component, or list of Gradio input components. Components can either be passed as instantiated objects, or referred to by their string shortcuts. The number of input components should match the number of parameters in fn. + outputs (Union[str, List[Union[str, OutputComponent]]]): a single Gradio output component, or list of Gradio output components. Components can either be passed as instantiated objects, or referred to by their string shortcuts. The number of output components should match the number of values returned by fn. + verbose (bool): whether to print detailed information during launch. + examples (List[List[Any]]): sample inputs for the function; if provided, appears below the UI components and can be used to populate the interface. Should be nested list, in which the outer list consists of samples and each inner list consists of an input corresponding to each input component. + live (bool): whether the interface should automatically reload on change. + capture_session (bool): if True, captures the default graph and session (needed for Tensorflow 1.x) + title (str): a title for the interface; if provided, appears above the input and output components. + description (str): a description for the interface; if provided, appears above the input and output components. + thumbnail (str): path to image or src to use as display picture for models listed in gradio.app/hub + allow_screenshot (bool): if False, users will not see a button to take a screenshot of the interface. + allow_flagging (bool): if False, users will not see a button to flag an input and output. + flagging_dir (str): what to name the dir where flagged data is stored. + """ + + def get_input_instance(iface): + if isinstance(iface, str): + shortcut = InputComponent.get_all_shortcut_implementations()[iface] + return shortcut[0](**shortcut[1]) + elif isinstance(iface, InputComponent): + return iface + else: + raise ValueError("Input interface must be of type `str` or " + "`InputComponent`") + + def get_output_instance(iface): + if isinstance(iface, str): + shortcut = OutputComponent.get_all_shortcut_implementations()[iface] + return shortcut[0](**shortcut[1]) + elif isinstance(iface, OutputComponent): + return iface + else: + raise ValueError( + "Output interface must be of type `str` or " + "`OutputComponent`" + ) + + if isinstance(inputs, list): + self.input_interfaces = [get_input_instance(i) for i in inputs] + else: + self.input_interfaces = [get_input_instance(inputs)] + if isinstance(outputs, list): + self.output_interfaces = [get_output_instance(i) for i in outputs] + else: + self.output_interfaces = [get_output_instance(outputs)] + if not isinstance(fn, list): + fn = [fn] + + self.output_interfaces *= len(fn) + self.predict = fn + self.verbose = verbose + self.status = "OFF" + self.live = live + self.show_input = show_input + self.show_output = show_output + self.flag_hash = random.getrandbits(32) + self.capture_session = capture_session + self.session = None + self.server_name = server_name + self.title = title + self.description = description + self.thumbnail = thumbnail + self.examples = examples + self.server_port = server_port + self.simple_server = None + self.allow_screenshot = allow_screenshot + self.allow_flagging = allow_flagging + self.flagging_dir = flagging_dir + Interface.instances.add(self) + self.analytics_enabled=analytics_enabled + + data = {'fn': fn, + 'inputs': inputs, + 'outputs': outputs, + 'live': live, + 'capture_session': capture_session, + 'ip_address': ip_address + } + + if self.capture_session: + try: + import tensorflow as tf + self.session = tf.get_default_graph(), \ + tf.keras.backend.get_session() + except (ImportError, AttributeError): + # If they are using TF >= 2.0 or don't have TF, + # just ignore this. + pass + + if self.allow_flagging: + if self.title is not None: + dir_name = "_".join(self.title.split(" ")) + else: + dir_name = "_".join([fn.__name__ for fn in self.predict]) + index = 1 + while os.path.exists(self.flagging_dir + "/" + dir_name + + "_{}".format(index)): + index += 1 + self.flagging_dir = self.flagging_dir + "/" + dir_name + \ + "_{}".format(index) + + if self.analytics_enabled: + try: + requests.post(analytics_url + 'gradio-initiated-analytics/', + data=data) + except requests.ConnectionError: + pass # do not push analytics if no network + + def get_config_file(self): + config = { + "input_interfaces": [ + (iface.__class__.__name__.lower(), iface.get_template_context()) + for iface in self.input_interfaces], + "output_interfaces": [ + (iface.__class__.__name__.lower(), iface.get_template_context()) + for iface in self.output_interfaces], + "function_count": len(self.predict), + "live": self.live, + "show_input": self.show_input, + "show_output": self.show_output, + "title": self.title, + "description": self.description, + "thumbnail": self.thumbnail, + "allow_screenshot": self.allow_screenshot, + "allow_flagging": self.allow_flagging + } + try: + param_names = inspect.getfullargspec(self.predict[0])[0] + for iface, param in zip(config["input_interfaces"], param_names): + if not iface[1]["label"]: + iface[1]["label"] = param.replace("_", " ") + for i, iface in enumerate(config["output_interfaces"]): + ret_name = "Output " + str(i + 1) if len(config["output_interfaces"]) > 1 else "Output" + if not iface[1]["label"]: + iface[1]["label"] = ret_name + except ValueError: + pass + + return config + + def process(self, raw_input, predict_fn=None): + """ + :param raw_input: a list of raw inputs to process and apply the + prediction(s) on. + :param predict_fn: which function to process. If not provided, all of the model functions are used. + :return: + processed output: a list of processed outputs to return as the + prediction(s). + duration: a list of time deltas measuring inference time for each + prediction fn. + """ + processed_input = [input_interface.preprocess(raw_input[i]) + for i, input_interface in enumerate(self.input_interfaces)] + predictions = [] + durations = [] + for predict_fn in self.predict: + start = time.time() + if self.capture_session and not (self.session is None): + graph, sess = self.session + with graph.as_default(): + with sess.as_default(): + prediction = predict_fn(*processed_input) + else: + try: + prediction = predict_fn(*processed_input) + except ValueError as exception: + if str(exception).endswith("is not an element of this " + "graph."): + raise ValueError("It looks like you might be using " + "tensorflow < 2.0. Please " + "pass capture_session=True in " + "Interface to avoid the 'Tensor is " + "not an element of this graph.' " + "error.") + else: + raise exception + duration = time.time() - start + + if len(self.output_interfaces) == len(self.predict): + prediction = [prediction] + durations.append(duration) + predictions.extend(prediction) + processed_output = [output_interface.postprocess( + predictions[i]) for i, output_interface in enumerate(self.output_interfaces)] + return processed_output, durations + + def close(self): + if self.simple_server and not (self.simple_server.fileno() == -1): # checks to see if server is running + print("Closing Gradio server on port {}...".format(self.server_port)) + networking.close_server(self.simple_server) + + def run_until_interrupted(self, thread, path_to_local_server): + try: + while 1: + pass + except (KeyboardInterrupt, OSError): + print("Keyboard interruption in main thread... closing server.") + thread.keep_running = False + networking.url_ok(path_to_local_server) + + def test_launch(self): + for predict_fn in self.predict: + print("Test launching: {}()...".format(predict_fn.__name__), end=' ') + + raw_input = [] + for input_interface in self.input_interfaces: + if input_interface.test_input is None: # If no test input is defined for that input interface + print("SKIPPED") + break + else: # If a test input is defined for each interface object + raw_input.append(input_interface.test_input) + else: + self.process(raw_input) + print("PASSED") + continue + + def launch(self, inline=None, inbrowser=None, share=False, debug=False): + """ + Parameters + inline (bool): whether to display in the interface inline on python notebooks. + inbrowser (bool): whether to automatically launch the interface in a new tab on the default browser. + share (bool): whether to create a publicly shareable link from your computer for the interface. + debug (bool): if True, and the interface was launched from Google Colab, prints the errors in the cell output. + Returns + httpd (str): HTTPServer object + path_to_local_server (str): Locally accessible link + share_url (str): Publicly accessible link (if share=True) + """ + output_directory = tempfile.mkdtemp() + # Set up a port to serve the directory containing the static files with interface. + server_port, httpd, thread = networking.start_simple_server( + self, output_directory, self.server_name, server_port=self.server_port) + path_to_local_server = "http://{}:{}/".format(self.server_name, server_port) + networking.build_template(output_directory) + + self.server_port = server_port + self.status = "RUNNING" + self.simple_server = httpd + + try: + current_pkg_version = pkg_resources.require("gradio")[0].version + latest_pkg_version = requests.get(url=PKG_VERSION_URL).json()["version"] + if StrictVersion(latest_pkg_version) > StrictVersion(current_pkg_version): + print("IMPORTANT: You are using gradio version {}, " + "however version {} " + "is available, please upgrade.".format( + current_pkg_version, latest_pkg_version)) + print('--------') + except: # TODO(abidlabs): don't catch all exceptions + pass + + is_colab = utils.colab_check() + if not is_colab: + if not networking.url_ok(path_to_local_server): + share = True + else: + print(strings.en["RUNNING_LOCALLY"].format(path_to_local_server)) + else: + if debug: + print("Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. " + "To turn off, set debug=False in launch().") + else: + print("Colab notebook detected. To show errors in colab notebook, set debug=True in launch()") + + if share: + print("This share link will expire in 6 hours. If you need a " + "permanent link, email support@gradio.app") + try: + share_url = networking.setup_tunnel(server_port) + print("Running on External URL:", share_url) + except RuntimeError: + data = {'error': 'RuntimeError in launch method'} + if self.analytics_enabled: + try: + requests.post(analytics_url + 'gradio-error-analytics/', + data=data) + except requests.ConnectionError: + pass # do not push analytics if no network + share_url = None + if self.verbose: + print(strings.en["NGROK_NO_INTERNET"]) + else: + if is_colab: # For a colab notebook, create a public link even if + # share is False. + share_url = networking.setup_tunnel(server_port) + print("Running on External URL:", share_url) + if self.verbose: + print(strings.en["COLAB_NO_LOCAL"]) + else: # If it's not a colab notebook and share=False, print a message telling them about the share option. + print("To get a public link for a hosted model, " + "set Share=True") + if self.verbose: + print(strings.en["PUBLIC_SHARE_TRUE"]) + share_url = None + + if inline is None: + inline = utils.ipython_check() + if inbrowser is None: + # if interface won't appear inline, open it in new tab, + # otherwise keep it inline + inbrowser = not inline + else: + if inbrowser is None: + inbrowser = False + + if inbrowser and not is_colab: + webbrowser.open(path_to_local_server) # Open a browser tab + # with the interface. + if inline: + from IPython.display import IFrame, display + # Embed the remote interface page if on google colab; + # otherwise, embed the local page. + print("Interface loading below...") + if share: + while not networking.url_ok(share_url): + time.sleep(1) + display(IFrame(share_url, width=1000, height=500)) + else: + display(IFrame(path_to_local_server, width=1000, height=500)) + + config = self.get_config_file() + config["share_url"] = share_url + + processed_examples = [] + if self.examples is not None: + for example_set in self.examples: + processed_set = [] + for iface, example in zip(self.input_interfaces, example_set): + processed_set.append(iface.process_example(example)) + processed_examples.append(processed_set) + config["examples"] = processed_examples + + networking.set_config(config, output_directory) + networking.set_meta_tags(output_directory, self.title, self.description, self.thumbnail) + + if debug: + while True: + sys.stdout.flush() + time.sleep(0.1) + + launch_method = 'browser' if inbrowser else 'inline' + data = {'launch_method': launch_method, + 'is_google_colab': is_colab, + 'is_sharing_on': share, + 'share_url': share_url, + 'ip_address': ip_address + } + + if self.analytics_enabled: + try: + requests.post(analytics_url + 'gradio-launched-analytics/', + data=data) + except requests.ConnectionError: + pass # do not push analytics if no network + + is_in_interactive_mode = bool(getattr(sys, 'ps1', sys.flags.interactive)) + if not is_in_interactive_mode: + self.run_until_interrupted(thread, path_to_local_server) + + return httpd, path_to_local_server, share_url + + +def reset_all(): + for io in Interface.get_instances(): + io.close() diff --git a/build/lib/gradio/networking.py b/build/lib/gradio/networking.py new file mode 100644 index 0000000000..ce749b97bb --- /dev/null +++ b/build/lib/gradio/networking.py @@ -0,0 +1,265 @@ +""" +Defines helper methods useful for setting up ports, launching servers, and handling `ngrok` +""" + +import os +import socket +import threading +from http.server import HTTPServer as BaseHTTPServer, SimpleHTTPRequestHandler +import pkg_resources +from distutils import dir_util +from gradio import inputs, outputs +import time +import json +from gradio.tunneling import create_tunnel +import urllib.request +from shutil import copyfile +import requests +import sys +import csv + + +INITIAL_PORT_VALUE = int(os.getenv( + 'GRADIO_SERVER_PORT', "7860")) # The http server will try to open on port 7860. If not available, 7861, 7862, etc. +TRY_NUM_PORTS = int(os.getenv( + 'GRADIO_NUM_PORTS', "100")) # Number of ports to try before giving up and throwing an exception. +LOCALHOST_NAME = os.getenv( + 'GRADIO_SERVER_NAME', "127.0.0.1") +GRADIO_API_SERVER = "https://api.gradio.app/v1/tunnel-request" + +STATIC_TEMPLATE_LIB = pkg_resources.resource_filename("gradio", "templates/") +STATIC_PATH_LIB = pkg_resources.resource_filename("gradio", "static/") +STATIC_PATH_TEMP = "static/" +TEMPLATE_TEMP = "index.html" +BASE_JS_FILE = "static/js/all_io.js" +CONFIG_FILE = "static/config.json" + +ASSOCIATION_PATH_IN_STATIC = "static/apple-app-site-association" +ASSOCIATION_PATH_IN_ROOT = "apple-app-site-association" + + +def build_template(temp_dir): + """ + Create HTML file with supporting JS and CSS files in a given directory. + :param temp_dir: string with path to temp directory in which the html file should be built + """ + dir_util.copy_tree(STATIC_TEMPLATE_LIB, temp_dir) + dir_util.copy_tree(STATIC_PATH_LIB, os.path.join( + temp_dir, STATIC_PATH_TEMP)) + + # Move association file to root of temporary directory. + copyfile(os.path.join(temp_dir, ASSOCIATION_PATH_IN_STATIC), + os.path.join(temp_dir, ASSOCIATION_PATH_IN_ROOT)) + + +def render_template_with_tags(template_path, context): + """ + Combines the given template with a given context dictionary by replacing all of the occurrences of tags (enclosed + in double curly braces) with corresponding values. + :param template_path: a string with the path to the template file + :param context: a dictionary whose string keys are the tags to replace and whose string values are the replacements. + """ + with open(template_path) as fin: + old_lines = fin.readlines() + new_lines = render_string_or_list_with_tags(old_lines, context) + with open(template_path, "w") as fout: + for line in new_lines: + fout.write(line) + + +def render_string_or_list_with_tags(old_lines, context): + # Handle string case + if isinstance(old_lines, str): + for key, value in context.items(): + old_lines = old_lines.replace(r"{{" + key + r"}}", str(value)) + return old_lines + + # Handle list case + new_lines = [] + for line in old_lines: + for key, value in context.items(): + line = line.replace(r"{{" + key + r"}}", str(value)) + new_lines.append(line) + return new_lines + + +def set_meta_tags(temp_dir, title, description, thumbnail): + title = "Gradio" if title is None else title + description = "Easy-to-use UI for your machine learning model" if description is None else description + thumbnail = "https://gradio.app/static/img/logo_only.png" if thumbnail is None else thumbnail + + index_file = os.path.join(temp_dir, TEMPLATE_TEMP) + render_template_with_tags(index_file, { + "title": title, + "description": description, + "thumbnail": thumbnail + }) + + +def set_config(config, temp_dir): + config_file = os.path.join(temp_dir, CONFIG_FILE) + with open(config_file, "w") as output: + json.dump(config, output) + + +def get_first_available_port(initial, final): + """ + Gets the first open port in a specified range of port numbers + :param initial: the initial value in the range of port numbers + :param final: final (exclusive) value in the range of port numbers, should be greater than `initial` + :return: + """ + for port in range(initial, final): + try: + s = socket.socket() # create a socket object + s.bind((LOCALHOST_NAME, port)) # Bind to the port + s.close() + return port + except OSError: + pass + raise OSError( + "All ports from {} to {} are in use. Please close a port.".format( + initial, final + ) + ) + + +def serve_files_in_background(interface, port, directory_to_serve=None, server_name=LOCALHOST_NAME): + class HTTPHandler(SimpleHTTPRequestHandler): + """This handler uses server.base_path instead of always using os.getcwd()""" + def _set_headers(self): + self.send_response(200) + self.send_header("Content-type", "application/json") + self.end_headers() + + def end_headers(self): + self.send_header('Access-Control-Allow-Origin', '*') + self.send_header('Access-Control-Allow-Methods', 'GET, POST') + return super(HTTPHandler, self).end_headers() + + def translate_path(self, path): + path = SimpleHTTPRequestHandler.translate_path(self, path) + relpath = os.path.relpath(path, os.getcwd()) + fullpath = os.path.join(self.server.base_path, relpath) + return fullpath + + def log_message(self, format, *args): + return + + def do_POST(self): + # Read body of the request. + if self.path == "/api/predict/": + # Make the prediction. + self._set_headers() + data_string = self.rfile.read( + int(self.headers["Content-Length"])) + msg = json.loads(data_string) + raw_input = msg["data"] + prediction, durations = interface.process(raw_input) + + output = {"data": prediction, "durations": durations} + self.wfile.write(json.dumps(output).encode()) + + elif self.path == "/api/flag/": + self._set_headers() + data_string = self.rfile.read( + int(self.headers["Content-Length"])) + msg = json.loads(data_string) + os.makedirs(interface.flagging_dir, exist_ok=True) + output = {'inputs': [interface.input_interfaces[ + i].rebuild( + interface.flagging_dir, msg['data']['input_data'][i]) for i + in range(len(interface.input_interfaces))], + 'outputs': [interface.output_interfaces[ + i].rebuild( + interface.flagging_dir, msg['data']['output_data'][i]) + for i + in range(len(interface.output_interfaces))]} + + log_fp = "{}/log.csv".format(interface.flagging_dir) + + is_new = not os.path.exists(log_fp) + + with open(log_fp, "a") as csvfile: + headers = ["input_{}".format(i) for i in range(len( + output["inputs"]))] + ["output_{}".format(i) for i in + range(len(output["outputs"]))] + writer = csv.DictWriter(csvfile, delimiter=',', + lineterminator='\n', + fieldnames=headers) + if is_new: + writer.writeheader() + + writer.writerow( + dict(zip(headers, output["inputs"] + + output["outputs"])) + ) + else: + self.send_error(404, 'Path not found: {}'.format(self.path)) + + class HTTPServer(BaseHTTPServer): + """The main server, you pass in base_path which is the path you want to serve requests from""" + + def __init__(self, base_path, server_address, RequestHandlerClass=HTTPHandler): + self.base_path = base_path + BaseHTTPServer.__init__(self, server_address, RequestHandlerClass) + + class QuittableHTTPThread(threading.Thread): + def __init__(self, httpd): + super().__init__(daemon=False) + self.httpd = httpd + self.keep_running =True + + def run(self): + while self.keep_running: + self.httpd.handle_request() + + httpd = HTTPServer(directory_to_serve, (server_name, port)) + thread = QuittableHTTPThread(httpd=httpd) + thread.start() + + return httpd, thread + + +def start_simple_server(interface, directory_to_serve=None, server_name=None, server_port=None): + if server_port is None: + server_port = INITIAL_PORT_VALUE + port = get_first_available_port( + server_port, server_port + TRY_NUM_PORTS + ) + httpd, thread = serve_files_in_background(interface, port, directory_to_serve, server_name) + return port, httpd, thread + + +def close_server(server): + server.server_close() + + +def url_request(url): + try: + req = urllib.request.Request( + url=url, headers={"content-type": "application/json"} + ) + res = urllib.request.urlopen(req, timeout=10) + return res + except Exception as e: + raise RuntimeError(str(e)) + + +def setup_tunnel(local_server_port): + response = url_request(GRADIO_API_SERVER) + if response and response.code == 200: + try: + payload = json.loads(response.read().decode("utf-8"))[0] + return create_tunnel(payload, LOCALHOST_NAME, local_server_port) + + except Exception as e: + raise RuntimeError(str(e)) + + +def url_ok(url): + try: + r = requests.head(url) + return r.status_code == 200 + except ConnectionError: + return False diff --git a/build/lib/gradio/outputs.py b/build/lib/gradio/outputs.py new file mode 100644 index 0000000000..1f72310d20 --- /dev/null +++ b/build/lib/gradio/outputs.py @@ -0,0 +1,389 @@ +""" +This module defines various classes that can serve as the `output` to an interface. Each class must inherit from +`OutputComponent`, and each class must define a path to its template. All of the subclasses of `OutputComponent` are +automatically added to a registry, which allows them to be easily referenced in other parts of the code. +""" + +from gradio.component import Component +import numpy as np +import json +from gradio import processing_utils +import datetime +import operator +from numbers import Number +import warnings +import tempfile +import scipy +import os + +class OutputComponent(Component): + """ + Output Component. All output components subclass this. + """ + pass + +class Textbox(OutputComponent): + ''' + Component creates a textbox to render output text or number. + Output type: Union[str, float, int] + ''' + + def __init__(self, type="str", label=None): + ''' + Parameters: + type (str): Type of value to be passed to component. "str" expects a string, "number" expects a float value. + label (str): component name in interface. + ''' + self.type = type + super().__init__(label) + + def get_template_context(self): + return { + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "text": {"type": "str"}, + "textbox": {"type": "str"}, + "number": {"type": "number"}, + } + + def postprocess(self, y): + if self.type == "str": + return y + elif self.type == "number": + return str(y) + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'str', 'number'") + + +class Label(OutputComponent): + ''' + Component outputs a classification label, along with confidence scores of top categories if provided. Confidence scores are represented as a dictionary mapping labels to scores between 0 and 1. + Output type: Union[Dict[str, float], str, int, float] + ''' + + LABEL_KEY = "label" + CONFIDENCE_KEY = "confidence" + CONFIDENCES_KEY = "confidences" + + def __init__(self, num_top_classes=None, label=None): + ''' + Parameters: + num_top_classes (int): number of most confident classes to show. + label (str): component name in interface. + ''' + self.num_top_classes = num_top_classes + super().__init__(label) + + def postprocess(self, y): + if isinstance(y, str) or isinstance(y, Number): + return {"label": str(y)} + elif isinstance(y, dict): + sorted_pred = sorted( + y.items(), + key=operator.itemgetter(1), + reverse=True + ) + if self.num_top_classes is not None: + sorted_pred = sorted_pred[:self.num_top_classes] + return { + self.LABEL_KEY: sorted_pred[0][0], + self.CONFIDENCES_KEY: [ + { + self.LABEL_KEY: pred[0], + self.CONFIDENCE_KEY: pred[1] + } for pred in sorted_pred + ] + } + elif isinstance(y, int) or isinstance(y, float): + return {self.LABEL_KEY: str(y)} + else: + raise ValueError("The `Label` output interface expects one of: a string label, or an int label, a " + "float label, or a dictionary whose keys are labels and values are confidences.") + + @classmethod + def get_shortcut_implementations(cls): + return { + "label": {}, + } + + def rebuild(self, dir, data): + """ + Default rebuild method for label + """ + # return json.loads(data) + return data + +class Image(OutputComponent): + ''' + Component displays an output image. + Output type: Union[numpy.array, PIL.Image, str, matplotlib.pyplot] + ''' + + def __init__(self, type="numpy", plot=False, label=None): + ''' + Parameters: + type (str): Type of value to be passed to component. "numpy" expects a numpy array with shape (width, height, 3), "pil" expects a PIL image object, "file" expects a file path to the saved image, "plot" expects a matplotlib.pyplot object. + plot (bool): DEPRECATED. Whether to expect a plot figure to be + returned by the function. + label (str): component name in interface. + ''' + if plot: + warnings.warn("The 'plot' parameter has been deprecated. Set parameter 'type' to 'plot' instead.", DeprecationWarning) + self.type = "plot" + else: + self.type = type + super().__init__(label) + + @classmethod + def get_shortcut_implementations(cls): + return { + "image": {}, + "plot": {"type": "plot"}, + "pil": {"type": "pil"} + } + + def postprocess(self, y): + if self.type in ["numpy", "pil"]: + if self.type == "pil": + y = np.array(y) + return processing_utils.encode_array_to_base64(y) + elif self.type == "file": + return processing_utils.encode_file_to_base64(y) + elif self.type == "plot": + return processing_utils.encode_plot_to_base64(y) + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'pil', 'file', 'plot'.") + + def rebuild(self, dir, data): + """ + Default rebuild method to decode a base64 image + """ + im = processing_utils.decode_base64_to_image(data) + timestamp = datetime.datetime.now() + filename = 'output_{}.png'.format(timestamp. + strftime("%Y-%m-%d-%H-%M-%S")) + im.save('{}/{}'.format(dir, filename), 'PNG') + return filename + +class KeyValues(OutputComponent): + ''' + Component displays a table representing values for multiple fields. + Output type: Union[Dict, List[Tuple[str, Union[str, int, float]]]] + ''' + + def __init__(self, label=None): + ''' + Parameters: + label (str): component name in interface. + ''' + super().__init__(label) + + def postprocess(self, y): + if isinstance(y, dict): + return list(y.items()) + elif isinstance(y, list): + return y + else: + raise ValueError("The `KeyValues` output interface expects an output that is a dictionary whose keys are " + "labels and values are corresponding values.") + + @classmethod + def get_shortcut_implementations(cls): + return { + "key_values": {}, + } + + +class HighlightedText(OutputComponent): + ''' + Component creates text that contains spans that are highlighted by category or numerical value. + Output is represent as a list of Tuple pairs, where the first element represents the span of text represented by the tuple, and the second element represents the category or value of the text. + Output type: List[Tuple[str, Union[float, str]]] + ''' + + def __init__(self, color_map=None, label=None): + ''' + Parameters: + color_map (Dict[str, str]): Map between category and respective colors + label (str): component name in interface. + ''' + self.color_map = color_map + super().__init__(label) + + def get_template_context(self): + return { + "color_map": self.color_map, + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "highlight": {}, + } + + def postprocess(self, y): + return y + + +class Audio(OutputComponent): + ''' + Creates an audio player that plays the output audio. + Output type: Union[Tuple[int, numpy.array], str] + ''' + + def __init__(self, type="numpy", label=None): + ''' + Parameters: + type (str): Type of value to be passed to component. "numpy" returns a 2-set tuple with an integer sample_rate and the data numpy.array of shape (samples, 2), "file" returns a temporary file path to the saved wav audio file. + label (str): component name in interface. + ''' + self.type = type + super().__init__(label) + + def get_template_context(self): + return { + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "audio": {}, + } + + def postprocess(self, y): + if self.type in ["numpy", "file"]: + if self.type == "numpy": + file = tempfile.NamedTemporaryFile() + scipy.io.wavfile.write(file, y[0], y[1]) + y = file.name + return processing_utils.encode_file_to_base64(y, type="audio", ext="wav") + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'file'.") + + +class JSON(OutputComponent): + ''' + Used for JSON output. Expects a JSON string or a Python object that is JSON serializable. + Output type: Union[str, Any] + ''' + + def __init__(self, label=None): + ''' + Parameters: + label (str): component name in interface. + ''' + super().__init__(label) + + def postprocess(self, y): + if isinstance(y, str): + return json.dumps(y) + else: + return y + + + @classmethod + def get_shortcut_implementations(cls): + return { + "json": {}, + } + + +class HTML(OutputComponent): + ''' + Used for HTML output. Expects an HTML valid string. + Output type: str + ''' + + def __init__(self, label=None): + ''' + Parameters: + label (str): component name in interface. + ''' + super().__init__(label) + + + @classmethod + def get_shortcut_implementations(cls): + return { + "html": {}, + } + + +class File(OutputComponent): + ''' + Used for file output. + Output type: Union[file-like, str] + ''' + + def __init__(self, label=None): + ''' + Parameters: + label (str): component name in interface. + ''' + super().__init__(label) + + + @classmethod + def get_shortcut_implementations(cls): + return { + "file": {}, + } + + def postprocess(self, y): + return { + "name": os.path.basename(y), + "size": os.path.getsize(y), + "data": processing_utils.encode_file_to_base64(y, header=False) + } + + +class Dataframe(OutputComponent): + """ + Component displays 2D output through a spreadsheet interface. + Output type: Union[pandas.DataFrame, numpy.array, List[Union[str, float]], List[List[Union[str, float]]]] + """ + + def __init__(self, headers=None, type="pandas", label=None): + ''' + Parameters: + headers (List[str]): Header names to dataframe. + type (str): Type of value to be passed to component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for Python array. + label (str): component name in interface. + ''' + self.type = type + self.headers = headers + super().__init__(label) + + + def get_template_context(self): + return { + "headers": self.headers, + **super().get_template_context() + } + + @classmethod + def get_shortcut_implementations(cls): + return { + "dataframe": {"type": "pandas"}, + "numpy": {"type": "numpy"}, + "matrix": {"type": "array"}, + "list": {"type": "array"}, + } + + def postprocess(self, y): + if self.type == "pandas": + return {"headers": list(y.columns), "data": y.values.tolist()} + elif self.type in ("numpy", "array"): + if self.type == "numpy": + y = y.tolist() + if len(y) == 0 or not isinstance(y[0], list): + y = [y] + return {"data": y} + else: + raise ValueError("Unknown type: " + self.type + ". Please choose from: 'pandas', 'numpy', 'array'.") diff --git a/build/lib/gradio/processing_utils.py b/build/lib/gradio/processing_utils.py new file mode 100644 index 0000000000..1e4fba54d2 --- /dev/null +++ b/build/lib/gradio/processing_utils.py @@ -0,0 +1,156 @@ +from PIL import Image, ImageOps +from io import BytesIO +import base64 +import tempfile +import scipy.io.wavfile +from scipy.fftpack import dct +import numpy as np +import skimage + + +######################### +# IMAGE PRE-PROCESSING +######################### +def decode_base64_to_image(encoding): + content = encoding.split(';')[1] + image_encoded = content.split(',')[1] + return Image.open(BytesIO(base64.b64decode(image_encoded))) + + +def encode_file_to_base64(f, type="image", ext=None, header=True): + with open(f, "rb") as file: + encoded_string = base64.b64encode(file.read()) + base64_str = str(encoded_string, 'utf-8') + if not header: + return base64_str + if ext is None: + ext = f.split(".")[-1] + return "data:" + type + "/" + ext + ";base64," + base64_str + + +def encode_plot_to_base64(plt): + with BytesIO() as output_bytes: + plt.savefig(output_bytes, format="png") + bytes_data = output_bytes.getvalue() + base64_str = str(base64.b64encode(bytes_data), 'utf-8') + return "data:image/png;base64," + base64_str + +def encode_array_to_base64(image_array): + with BytesIO() as output_bytes: + PIL_image = Image.fromarray(skimage.img_as_ubyte(image_array)) + PIL_image.save(output_bytes, 'PNG') + bytes_data = output_bytes.getvalue() + base64_str = str(base64.b64encode(bytes_data), 'utf-8') + return "data:image/png;base64," + base64_str + + +def resize_and_crop(img, size, crop_type='center'): + """ + Resize and crop an image to fit the specified size. + args: + size: `(width, height)` tuple. + crop_type: can be 'top', 'middle' or 'bottom', depending on this + value, the image will cropped getting the 'top/left', 'middle' or + 'bottom/right' of the image to fit the size. + raises: + ValueError: if an invalid `crop_type` is provided. + """ + if crop_type == "top": + center = (0, 0) + elif crop_type == "center": + center = (0.5, 0.5) + else: + raise ValueError + return ImageOps.fit(img, size, centering=center) + +################## +# OUTPUT +################## + +def decode_base64_to_binary(encoding): + inp = encoding.split(';')[1].split(',')[1] + return base64.b64decode(inp) + + +def decode_base64_to_file(encoding): + file_obj = tempfile.NamedTemporaryFile() + file_obj.write(decode_base64_to_binary(encoding)) + return file_obj + + +################## +# AUDIO FILES +################## + +def generate_mfcc_features_from_audio_file(wav_filename, + pre_emphasis=0.95, + frame_size= 0.025, + frame_stride=0.01, + NFFT=512, + nfilt=40, + num_ceps=12, + cep_lifter=22): + """ + Loads and preprocesses a .wav audio file into mfcc coefficients, the typical inputs to models. + Adapted from: https://haythamfayek.com/2016/04/21/speech-processing-for-machine-learning.html + :param wav_filename: string name of audio file to process. + :param pre_emphasis: a float factor, typically 0.95 or 0.97, which amplifies high frequencies. + :param frame_size: a float that is the length, in seconds, of time frame over which to take the fft. + :param frame_stride: a float that is the offset, in seconds, between consecutive time frames. + :param NFFT: The number of points in the short-time fft for each time frame. + :param nfilt: The number of filters on the Mel-scale to extract frequency bands. + :param num_ceps: the number of cepstral coefficients to retrain. + :param cep_lifter: the int factor, by which to de-emphasize higher-frequency. + :return: a numpy array of mfcc coefficients. + """ + sample_rate, signal = scipy.io.wavfile.read(wav_filename) + emphasized_signal = np.append(signal[0], signal[1:] - pre_emphasis * signal[:-1]) + + frame_length, frame_step = frame_size * sample_rate, frame_stride * sample_rate # Convert from seconds to samples + signal_length = len(emphasized_signal) + frame_length = int(round(frame_length)) + frame_step = int(round(frame_step)) + num_frames = int(np.ceil(float(np.abs(signal_length - frame_length)) / frame_step)) # Make sure that we have at least 1 frame + + pad_signal_length = num_frames * frame_step + frame_length + z = np.zeros((pad_signal_length - signal_length)) + pad_signal = np.append(emphasized_signal, z) # Pad Signal to make sure that all frames have equal number of samples without truncating any samples from the original signal + + indices = np.tile(np.arange(0, frame_length), (num_frames, 1)) + np.tile(np.arange(0, num_frames * frame_step, frame_step), (frame_length, 1)).T + frames = pad_signal[indices.astype(np.int32, copy=False)] + + frames *= np.hamming(frame_length) + mag_frames = np.absolute(np.fft.rfft(frames, NFFT)) # Magnitude of the FFT + pow_frames = ((1.0 / NFFT) * ((mag_frames) ** 2)) # Power Spectrum + + low_freq_mel = 0 + high_freq_mel = (2595 * np.log10(1 + (sample_rate / 2) / 700)) # Convert Hz to Mel + mel_points = np.linspace(low_freq_mel, high_freq_mel, nfilt + 2) # Equally spaced in Mel scale + hz_points = (700 * (10**(mel_points / 2595) - 1)) # Convert Mel to Hz + bin = np.floor((NFFT + 1) * hz_points / sample_rate) + + fbank = np.zeros((nfilt, int(np.floor(NFFT / 2 + 1)))) + for m in range(1, nfilt + 1): + f_m_minus = int(bin[m - 1]) # left + f_m = int(bin[m]) # center + f_m_plus = int(bin[m + 1]) # right + + for k in range(f_m_minus, f_m): + fbank[m - 1, k] = (k - bin[m - 1]) / (bin[m] - bin[m - 1]) + for k in range(f_m, f_m_plus): + fbank[m - 1, k] = (bin[m + 1] - k) / (bin[m + 1] - bin[m]) + filter_banks = np.dot(pow_frames, fbank.T) + filter_banks = np.where(filter_banks == 0, np.finfo(float).eps, filter_banks) # Numerical Stability + filter_banks = 20 * np.log10(filter_banks) # dB + + mfcc = dct(filter_banks, type=2, axis=1, norm='ortho')[:, 0: (num_ceps + 1)] # Keep filters 1-13 by default. + (nframes, ncoeff) = mfcc.shape + n = np.arange(ncoeff) + lift = 1 + (cep_lifter / 2) * np.sin(np.pi * n / cep_lifter) + mfcc *= lift + + filter_banks -= (np.mean(filter_banks, axis=0) + 1e-8) + mfcc -= (np.mean(mfcc, axis=0) + 1e-8) + return mfcc[np.newaxis, :, :] # Create a batch dimension. + + diff --git a/build/lib/gradio/static/apple-app-site-association b/build/lib/gradio/static/apple-app-site-association new file mode 100644 index 0000000000..36c39e3174 --- /dev/null +++ b/build/lib/gradio/static/apple-app-site-association @@ -0,0 +1,11 @@ +{ + "applinks": { + "apps": [], + "details": [ + { + "appID": "RHW8FBGSTX.app.gradio.Gradio", + "paths": ["*"] + } + ] + } +} \ No newline at end of file diff --git a/build/lib/gradio/static/css/gradio.css b/build/lib/gradio/static/css/gradio.css new file mode 100644 index 0000000000..0c8479bc13 --- /dev/null +++ b/build/lib/gradio/static/css/gradio.css @@ -0,0 +1,127 @@ +.panels { + margin-top: -24px; + margin-left: -16px; +} +.panel { + margin-top: 24px; + margin-left: 16px; + min-width: 300px; + flex: 1 1 0; + display: flex; + flex-direction: column; + box-sizing: border-box; +} +.panel_header { + text-transform: uppercase; + color: black; + font-size: 14px; + font-weight: bold; + display: flex; + margin-bottom: 8px; +} +.input_interfaces, .output_interfaces { + margin-bottom: 16px; + background-color: whitesmoke; + border-radius: 4px; + padding: 12px; + flex-grow: 1; +} +.interface { + display: flex; + flex-flow: column; +} +.interface_box { + height: 360px; +} +.interface_mini_box { + height: 180px; +} +.interface_max_box { + overflow: auto; + max-height: 360px; +} +.interface:not(*:last-child) { + margin-bottom: 16px; +} +.output_panel { + position: relative; +} +.loading { + position: absolute; + top: 3px; + right: 3px; + margin-left: auto; + z-index: 1; +} +.loading img { + height: 20px; + display: none; +} +.panel_buttons { + display: flex; + margin-left: -16px; +} +input.submit { + display: none; +} +input.panel_button { + background-color: whitesmoke; + padding: 12px; + box-sizing: border-box; + font-weight: bold; + border: 0 none; + border-radius: 4px; + margin-left: 16px; + flex-grow: 1; +} +input.submit { + background-color: #e67e22; + color: white; +} +.panel_button:hover { + background-color: lightgray; +} +input.submit:hover { + background-color: #f39c12; +} +.flag { + visibility: hidden; +} +.flagged { + background-color: pink !important; +} +/* label:hover { + background-color: lightgray; +} */ +.overlay { + position: absolute; + height: 100vh; + width: 100vw; + position: fixed; + z-index: 1; + background-color: rgba(0, 0, 0, 0.7); + top: 0; + left: 0; +} +.loading { + justify-content: center; + align-items: center; +} + +.invisible { + display: none !important; +} +.screenshot { + visibility: hidden; +} +.screenshot_logo { + display: none; + flex-grow: 1; + text-align: center; + padding: 4px; + box-sizing: border-box; + margin-left: 16px; +} +.screenshot_logo img { + height: 38px; +} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/checkbox_group.css b/build/lib/gradio/static/css/interfaces/input/checkbox_group.css new file mode 100644 index 0000000000..1df6d2f2ea --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/checkbox_group.css @@ -0,0 +1,20 @@ +.checkbox_group { + display: flex; + flex-wrap: wrap; + align-items: center; + font-size: 18px; + margin-top: -12px; + margin-left: -16px; +} +.checkbox_group input, .checkbox { + margin: 0px; +} +.checkbox_group label { + margin-top: 12px; + margin-left: 16px; +} +.checkbox_solo label { + width: 27px !important; + padding-left: 11px; + padding-right: 3px; +} diff --git a/build/lib/gradio/static/css/interfaces/input/dropdown.css b/build/lib/gradio/static/css/interfaces/input/dropdown.css new file mode 100644 index 0000000000..821d494287 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/dropdown.css @@ -0,0 +1,7 @@ +select.dropdown { + padding: 4px; + font-size: 18px; + border: solid 1px lightgray; + border-radius: 2px; + outline: none; +} diff --git a/build/lib/gradio/static/css/interfaces/input/file.css b/build/lib/gradio/static/css/interfaces/input/file.css new file mode 100644 index 0000000000..cbfc03758d --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/file.css @@ -0,0 +1,15 @@ +.file_display { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} +.file_name { + font-size: 24px; + font-weight: bold; + margin-bottom: 18px; +} +.file_size { + font-size: 18px; +} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/image.css b/build/lib/gradio/static/css/interfaces/input/image.css new file mode 100644 index 0000000000..e6fab55694 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/image.css @@ -0,0 +1,104 @@ +.hide { + display: none !important; +} +.image_display { + height: 100%; +} +.view_holders { + flex-grow: 1; + background-color: #CCCCCC; + position: relative; +} +.image_preview_holder, .saliency_holder { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} +.saliency_holder { + position: absolute; + top: 0; +} +.saliency { + display: flex; + flex-direction: column; + border: none; + opacity: 1; +} +.saliency > div { + display: flex; + flex-grow: 1; +} +.saliency > div > div { + flex-grow: 1; + background-color: #e67e22; +} +.image_preview { + width: 100%; + height: 100%; + object-fit: contain; +} +.hidden_upload { + display: none; +} +.image_editor_overlay { + display: flex; + justify-content: center; + align-items: center; +} +.image_editor_holder { + height: 85%; + width: 85%; +} +.image_editor { + background-color: black; +} +#tie-btn-reset, #tie-btn-delete, #tie-btn-delete-all { + display: none !important; +} +.tui-image-editor-icpartition { + background-color: transparent !important; +} +.tui_close { + border-radius: 0 !important; + border: none !important; + margin-left: 10px !important; + font-family: 'Open Sans', sans-serif !important; +} +.upload_zone { + font-weight: bold; + font-size: 24px; + color: #BBB; + cursor: pointer; + width: 100%; + height: 100%; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + line-height: 1.5em; + flex-flow: column; +} +.upload_zone img { + height: 120px; +} +.drop_zone { + border: dashed 8px #DDD; +} +.edit_holder { + display: flex; + justify-content: flex-end; + position: relative; +} +.edit_image { + position: absolute; + z-index: 1; +} +.interface_button { + padding: 6px; + text-transform: uppercase; + font-weight: bold; + font-size: 14px; +} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/microphone.css b/build/lib/gradio/static/css/interfaces/input/microphone.css new file mode 100644 index 0000000000..3f1a5b6b6a --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/microphone.css @@ -0,0 +1,52 @@ +.hidden { + display: none !important; +} +.recording.input_caption { + color: #C00000; +} +.volume_display { + width: 100%; + display: flex; +} +.volume { + flex-grow: 1; + display: flex; + align-items: center; +} +.volume_left { + justify-content: flex-end; +} +.volume_bar { + height: 12px; + background-color: #C00000; + transition: width 0.1s; +} +.volume_left .volume_bar { + border-radius: 4px 0 0 4px; +} +.volume_right .volume_bar { + border-radius: 0 4px 4px 0; +} +.player { + display: flex; + width: 100%; + height: 100%; + flex-flow: column; + align-items: center; + justify-content: center; +} +.waveform { + width: 100%; +} +.waveform > wave { + overflow: visible !important; +} +.waveform canvas { + border: none !important; +} +.playpause { + margin-top: 26px; + font-size: 20px; + padding: 4px; + border-radius: 2px; +} diff --git a/build/lib/gradio/static/css/interfaces/input/radio.css b/build/lib/gradio/static/css/interfaces/input/radio.css new file mode 100644 index 0000000000..041e7007c3 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/radio.css @@ -0,0 +1,15 @@ +.radio_group { + display: flex; + flex-wrap: wrap; + align-items: center; + font-size: 18px; + margin-top: -12px; + margin-left: -16px; +} +.radio_group input { + margin: 0px; +} +.radio_group label { + margin-top: 12px; + margin-left: 16px; +} diff --git a/build/lib/gradio/static/css/interfaces/input/sketchpad.css b/build/lib/gradio/static/css/interfaces/input/sketchpad.css new file mode 100644 index 0000000000..8753456eae --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/sketchpad.css @@ -0,0 +1,53 @@ +.hide { + display: none !important; +} +.sketch_tools { + flex: 0 1 auto; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 16px; +} +.brush { + border-radius: 50%; + background-color: #AAA; + margin: 0px 20px; + cursor: pointer; +} +.brush.selected, .brush:hover { + background-color: black; +} +#brush_1 { + height: 8px; + width: 8px; +} +#brush_2 { + height: 16px; + width: 16px; +} +#brush_3 { + height: 24px; + width: 24px; +} +.view_holders { + flex-grow: 1; + background-color: #CCCCCC; + position: relative; +} +.canvas_holder canvas { + background-color: white; +} +.canvas_holder { + text-align: center; + width: 100%; + height: calc(100% - 36px); +} +.saliency_holder { + position: absolute; + top: 0; + opacity: 0.9; +} +.view_holders canvas { + background-color: white; + border: solid 1px black; +} diff --git a/build/lib/gradio/static/css/interfaces/input/slider.css b/build/lib/gradio/static/css/interfaces/input/slider.css new file mode 100644 index 0000000000..70b3c4692b --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/slider.css @@ -0,0 +1,15 @@ +.slider_container .slider { + margin: 0 24px; +} +.slider_container .ui-slider-handle { + width: 3em !important; + height: 1.6em !important; + top: 50% !important; + margin-top: -.8em; + margin-left: -1.5em !important; + text-align: center; + line-height: 1.6em; + cursor: pointer !important; + font-weight: bold; + outline: none !important; +} \ No newline at end of file diff --git a/build/lib/gradio/static/css/interfaces/input/textbox.css b/build/lib/gradio/static/css/interfaces/input/textbox.css new file mode 100644 index 0000000000..b5971b7473 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/textbox.css @@ -0,0 +1,16 @@ +.input_text { + resize: none; + width: 100%; + font-size: 18px; + outline: none; + height: 100%; + background-color: white; + border: solid 1px lightgray; + border-radius: 2px; + box-sizing: border-box; + padding: 4px; + font-family: monospace; +} +.input_text_saliency { + display: none; +} diff --git a/build/lib/gradio/static/css/interfaces/input/webcam.css b/build/lib/gradio/static/css/interfaces/input/webcam.css new file mode 100644 index 0000000000..4154a52dea --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/input/webcam.css @@ -0,0 +1,20 @@ +.webcam_box { + width: 100% !important; + flex-grow: 1; + background-color: #BBBBBB; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; +} +.webcam_box canvas { + border: none; +} +.take_photo { + font-weight: bold; + font-size: 14px; + padding: 10px 0; +} +.snapped { + display: none; +} diff --git a/build/lib/gradio/static/css/interfaces/output/audio.css b/build/lib/gradio/static/css/interfaces/output/audio.css new file mode 100644 index 0000000000..cfaddb7191 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/output/audio.css @@ -0,0 +1,15 @@ +.output_text { + width: 100%; + font-size: 18px; + outline: none; + background-color: white; + border: solid 1px lightgray; + border-radius: 2px; + box-sizing: border-box; + padding: 4px; + min-height: 30px; + font-family: monospace; + white-space: pre-wrap; /* CSS3 */ + white-space: -moz-pre-wrap; /* Firefox */ + word-wrap: break-word; /* IE */ +} diff --git a/build/lib/gradio/static/css/interfaces/output/highlighted_text.css b/build/lib/gradio/static/css/interfaces/output/highlighted_text.css new file mode 100644 index 0000000000..d9d47566d0 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/output/highlighted_text.css @@ -0,0 +1,22 @@ +.highlight_legend { + margin-bottom: 4px; +} +.color_legend { + font-family: monospace; + padding: 4px; + border-radius: 2px; + display: flex; + justify-content: space-between; + background: linear-gradient(90deg, rgba(58,241,255,1) 0%, rgba(58,241,255,0) 49%, rgba(230,126,34,0) 50%, rgba(230,126,34,1) 100%); + margin-bottom: 4px; +} +.category-label { + display: inline-flex; + margin-right: 8px; + margin-bottom: 4px; +} +.category-label div { + width: 24px; + margin-right: 4px; +} + diff --git a/build/lib/gradio/static/css/interfaces/output/html.css b/build/lib/gradio/static/css/interfaces/output/html.css new file mode 100644 index 0000000000..cfaddb7191 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/output/html.css @@ -0,0 +1,15 @@ +.output_text { + width: 100%; + font-size: 18px; + outline: none; + background-color: white; + border: solid 1px lightgray; + border-radius: 2px; + box-sizing: border-box; + padding: 4px; + min-height: 30px; + font-family: monospace; + white-space: pre-wrap; /* CSS3 */ + white-space: -moz-pre-wrap; /* Firefox */ + word-wrap: break-word; /* IE */ +} diff --git a/build/lib/gradio/static/css/interfaces/output/image.css b/build/lib/gradio/static/css/interfaces/output/image.css new file mode 100644 index 0000000000..d303e9647f --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/output/image.css @@ -0,0 +1,13 @@ +.output_image_holder { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} +.output_image { + width: 100%; + height: 100%; + object-fit: contain; + display: none; +} diff --git a/build/lib/gradio/static/css/interfaces/output/json.css b/build/lib/gradio/static/css/interfaces/output/json.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/build/lib/gradio/static/css/interfaces/output/key_values.css b/build/lib/gradio/static/css/interfaces/output/key_values.css new file mode 100644 index 0000000000..e20d3b92c7 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/output/key_values.css @@ -0,0 +1,13 @@ +.key_values th { + text-align: left; +} +.key_values tr { + padding: 4px; +} +.key_values { + font-family: monospace; + font-size: 16px; +} +.key_values tbody tr:nth-child(odd) { + background-color: white; +} diff --git a/build/lib/gradio/static/css/interfaces/output/label.css b/build/lib/gradio/static/css/interfaces/output/label.css new file mode 100644 index 0000000000..3e3952e621 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/output/label.css @@ -0,0 +1,48 @@ +.confidence_intervals { + display: flex; + font-size: 20px; +} +.confidences { + flex-grow: 1; + display: flex; + flex-flow: column; + align-items: baseline; + font-family: monospace; +} +.confidence { + background-color: #888888; + color: white; + text-align: right; + display: flex; + align-items: center; + justify-content: flex-end; +} +.labels { + max-width: 120px; + margin-right: 4px; +} +.label, .confidence { + overflow: hidden; + white-space: nowrap; + height: 27px; + margin-bottom: 4px; + padding: 2px; +} +.label { + text-overflow: ellipsis; + text-align: right; +} +.confidence { + text-overflow: clip; + padding-left: 6px; + padding-right: 6px; +} +.output_class { + font-weight: bold; + font-size: 36px; + padding: 32px 16px;; + flex-grow: 1; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/build/lib/gradio/static/css/interfaces/output/textbox.css b/build/lib/gradio/static/css/interfaces/output/textbox.css new file mode 100644 index 0000000000..cfaddb7191 --- /dev/null +++ b/build/lib/gradio/static/css/interfaces/output/textbox.css @@ -0,0 +1,15 @@ +.output_text { + width: 100%; + font-size: 18px; + outline: none; + background-color: white; + border: solid 1px lightgray; + border-radius: 2px; + box-sizing: border-box; + padding: 4px; + min-height: 30px; + font-family: monospace; + white-space: pre-wrap; /* CSS3 */ + white-space: -moz-pre-wrap; /* Firefox */ + word-wrap: break-word; /* IE */ +} diff --git a/build/lib/gradio/static/css/loading.css b/build/lib/gradio/static/css/loading.css new file mode 100644 index 0000000000..ce3628d18a --- /dev/null +++ b/build/lib/gradio/static/css/loading.css @@ -0,0 +1,6875 @@ +.ld.reverse { + -webkit-animation-direction: reverse; + animation-direction: reverse; +} +.ld.xhalf { + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; +} +.ld.x1 { + -webkit-animation-duration: 1s; + animation-duration: 1s; +} +.ld.x2 { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} +.ld.x4 { + -webkit-animation-duration: 4s; + animation-duration: 4s; +} +.ld.running { + -webkit-animation-play-state: running; + animation-play-state: running; +} +.ld.paused { + -webkit-animation-play-state: paused; + animation-play-state: paused; +} +.ld.f00 { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} +.ld.f01 { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; +} +.ld.f02 { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; +} +.ld.f03 { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +.ld.f04 { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; +} +.ld.f05 { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; +} +.ld.f06 { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; +} +.ld.f07 { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; +} +.ld.f08 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} +.ld.f09 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} +.ld.f10 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} +.ld-ball, +.ld-ring, +.ld-hourglass, +.ld-loader, +.ld-cross, +.ld-square, +.ld-pie, +.ld-spinner { + width: 1em; + height: 1em; + position: relative; + color: inherit; + display: inline-block; +/* + &:before + content: "â—Ž" + display: block + visibility: hidden + */ +} +.ld-ball:after, +.ld-ring:after, +.ld-hourglass:after, +.ld-loader:after, +.ld-cross:after, +.ld-square:after, +.ld-pie:after, +.ld-spinner:after { + position: absolute; + margin: auto; + width: 100%; + height: 100%; + top: 0; + left: 0; + right: 0; + bottom: 0; + content: " "; + display: inline-block; + background: center center no-repeat; + background-size: cover; +} +.ld-ball:after { + border-radius: 50%; + background: currentColor; +} +.ld-pie:after { + width: 0; + height: 0; + border-radius: 50%; + border-style: solid; + border-width: 0.5em; + -webkit-background-clip: padding-box; + border-color: currentColor currentColor currentColor transparent; +} +.ld-ring:after { + border-radius: 50%; + border-style: solid; + border-width: 0.15em; + -webkit-background-clip: padding-box; + border-color: currentColor currentColor currentColor transparent; + box-sizing: border-box; +} +.ld-hourglass:after { + width: 0; + height: 0; + background: none; + border-radius: 50%; + border-style: solid; + border-width: 0.5em; + border-color: currentColor transparent currentColor transparent; +} +.ld-cross:after { + width: 18%; + height: 18%; + background: currentColor; + box-shadow: 0 0.18em 0 1px currentColor, 0 -0.18em 0 1px currentColor, 0.18em 0 0 1px currentColor, -0.18em 0 0 1px currentColor, 0 0.36em 0 1px currentColor, 0 -0.36em 0 1px currentColor, 0.36em 0 0 1px currentColor, -0.36em 0 0 1px currentColor; +} +.ld-square:after { + width: 90%; + height: 90%; + background: currentColor; +} +.ld-spinner:after { + width: 20%; + height: 20%; + border-radius: 50%; + background: none; + box-shadow: 0 0.5em 0 0 currentColor,0 -.5em 0 0 currentColor,.5em 0 0 0 currentColor,-.5em 0 0 0 currentColor,.35355339059327373em .35355339059327373em 0 0 currentColor,-.35355339059327373em .35355339059327373em 0 0 currentColor,.35355339059327373em -.35355339059327373em 0 0 currentColor,-.35355339059327373em -.35355339059327373em 0 0 currentColor; +} +.ld-loader { + background-size: cover; +} +@keyframes ld-blink { + 0% { + opacity: 1; + } + 49% { + opacity: 1; + } + 50% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes ld-blink { + 0% { + opacity: 1; + } + 49% { + opacity: 1; + } + 50% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +.ld.ld-blink { + -webkit-animation: ld-blink 1s infinite linear; + animation: ld-blink 1s infinite linear; +} +@keyframes ld-blur { + 0% { + filter: blur(0); + } + 50% { + filter: blur(5px); + } + 100% { + filter: blur(0); + } +} +@-webkit-keyframes ld-blur { + 0% { + filter: blur(0); + } + 50% { + filter: blur(5px); + } + 100% { + filter: blur(0); + } +} +.ld.ld-blur { + -webkit-animation: ld-blur 1s infinite; + animation: ld-blur 1s infinite; +} +@keyframes ld-breath { + 0% { + -webkit-transform: scale(0.86); + transform: scale(0.86); + } + 50% { + -webkit-transform: scale(1.06); + transform: scale(1.06); + } + 100% { + -webkit-transform: scale(0.86); + transform: scale(0.86); + } +} +@-webkit-keyframes ld-breath { + 0% { + -webkit-transform: scale(0.86); + transform: scale(0.86); + } + 50% { + -webkit-transform: scale(1.06); + transform: scale(1.06); + } + 100% { + -webkit-transform: scale(0.86); + transform: scale(0.86); + } +} +.ld.ld-breath { + -webkit-animation: ld-breath 1s infinite; + animation: ld-breath 1s infinite; +} +@keyframes ld-broadcast { + 0% { + box-shadow: 0 0 0 3px rgba(0,0,0,0.9); + } + 19% { + box-shadow: 0 0 0 2px rgba(0,0,0,0.7); + } + 20% { + box-shadow: 0 0 0 6px rgba(0,0,0,0.8); + } + 39% { + box-shadow: 0 0 0 5px rgba(0,0,0,0.6); + } + 40% { + box-shadow: 0 0 0 9px rgba(0,0,0,0.7); + } + 60% { + box-shadow: 0 0 0 8px rgba(0,0,0,0.6); + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 100% { + box-shadow: 0 0 0 0px rgba(0,0,0,0.2); + } +} +@-webkit-keyframes ld-broadcast { + 0% { + box-shadow: 0 0 0 3px rgba(0,0,0,0.9); + } + 19% { + box-shadow: 0 0 0 2px rgba(0,0,0,0.7); + } + 20% { + box-shadow: 0 0 0 6px rgba(0,0,0,0.8); + } + 39% { + box-shadow: 0 0 0 5px rgba(0,0,0,0.6); + } + 40% { + box-shadow: 0 0 0 9px rgba(0,0,0,0.7); + } + 60% { + box-shadow: 0 0 0 8px rgba(0,0,0,0.6); + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 100% { + box-shadow: 0 0 0 0px rgba(0,0,0,0.2); + } +} +.ld.ld-broadcast { + -webkit-animation: ld-broadcast 1s infinite ease-out; + animation: ld-broadcast 1s infinite ease-out; + border-radius: 50%; +} +@keyframes ld-clock { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 8.333% { + -webkit-transform: rotate(30deg); + transform: rotate(30deg); + } + 16.667% { + -webkit-transform: rotate(60deg); + transform: rotate(60deg); + } + 25% { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + } + 33.333% { + -webkit-transform: rotate(120deg); + transform: rotate(120deg); + } + 41.667% { + -webkit-transform: rotate(150deg); + transform: rotate(150deg); + } + 50% { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 58.333% { + -webkit-transform: rotate(210deg); + transform: rotate(210deg); + } + 66.667% { + -webkit-transform: rotate(240deg); + transform: rotate(240deg); + } + 75% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + } + 83.333% { + -webkit-transform: rotate(300deg); + transform: rotate(300deg); + } + 91.667% { + -webkit-transform: rotate(330deg); + transform: rotate(330deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@-webkit-keyframes ld-clock { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 8.333% { + -webkit-transform: rotate(30deg); + transform: rotate(30deg); + } + 16.667% { + -webkit-transform: rotate(60deg); + transform: rotate(60deg); + } + 25% { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + } + 33.333% { + -webkit-transform: rotate(120deg); + transform: rotate(120deg); + } + 41.667% { + -webkit-transform: rotate(150deg); + transform: rotate(150deg); + } + 50% { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 58.333% { + -webkit-transform: rotate(210deg); + transform: rotate(210deg); + } + 66.667% { + -webkit-transform: rotate(240deg); + transform: rotate(240deg); + } + 75% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + } + 83.333% { + -webkit-transform: rotate(300deg); + transform: rotate(300deg); + } + 91.667% { + -webkit-transform: rotate(330deg); + transform: rotate(330deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.ld.ld-clock { + -webkit-animation: ld-clock 9s infinite cubic-bezier(0, 0.7, 0.3, 1); + animation: ld-clock 9s infinite cubic-bezier(0, 0.7, 0.3, 1); +} +@keyframes ld-cycle { + 0%, 50%, 100% { + animation-timing-function: cubic-bezier(0.5, 0.5, 0.5, 0.5); + } + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 50% { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@-webkit-keyframes ld-cycle { + 0%, 50%, 100% { + animation-timing-function: cubic-bezier(0.5, 0.5, 0.5, 0.5); + } + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 50% { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.ld.ld-cycle { + -webkit-animation: ld-cycle 1s infinite linear; + animation: ld-cycle 1s infinite linear; +} +@keyframes ld-fade { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes ld-fade { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +.ld.ld-fade { + -webkit-animation: ld-fade 1s infinite linear; + animation: ld-fade 1s infinite linear; +} +@keyframes ld-flip { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } + 25% { + -webkit-transform: rotateY(180deg) rotateX(0deg); + transform: rotateY(180deg) rotateX(0deg); + } + 50% { + -webkit-transform: rotateY(180deg) rotateX(180deg); + transform: rotateY(180deg) rotateX(180deg); + } + 75% { + -webkit-transform: rotateY(0deg) rotateX(180deg); + transform: rotateY(0deg) rotateX(180deg); + } + 100% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } +} +@-webkit-keyframes ld-flip { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } + 25% { + -webkit-transform: rotateY(180deg) rotateX(0deg); + transform: rotateY(180deg) rotateX(0deg); + } + 50% { + -webkit-transform: rotateY(180deg) rotateX(180deg); + transform: rotateY(180deg) rotateX(180deg); + } + 75% { + -webkit-transform: rotateY(0deg) rotateX(180deg); + transform: rotateY(0deg) rotateX(180deg); + } + 100% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } +} +.ld.ld-flip { + -webkit-animation: ld-flip 2s infinite; + animation: ld-flip 2s infinite; +} +@keyframes ld-flip-v { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateX(0deg) rotateY(0deg); + transform: rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: rotateX(180deg) rotateY(0deg); + transform: rotateX(180deg) rotateY(0deg); + } + 100% { + -webkit-transform: rotateX(0deg) rotateY(0deg); + transform: rotateX(0deg) rotateY(0deg); + } +} +@-webkit-keyframes ld-flip-v { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateX(0deg) rotateY(0deg); + transform: rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: rotateX(180deg) rotateY(0deg); + transform: rotateX(180deg) rotateY(0deg); + } + 100% { + -webkit-transform: rotateX(0deg) rotateY(0deg); + transform: rotateX(0deg) rotateY(0deg); + } +} +.ld.ld-flip-v { + -webkit-animation: ld-flip-v 1s infinite; + animation: ld-flip-v 1s infinite; +} +@keyframes ld-flip-h { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } + 50% { + -webkit-transform: rotateY(180deg) rotateX(0deg); + transform: rotateY(180deg) rotateX(0deg); + } + 100% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } +} +@-webkit-keyframes ld-flip-h { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } + 50% { + -webkit-transform: rotateY(180deg) rotateX(0deg); + transform: rotateY(180deg) rotateX(0deg); + } + 100% { + -webkit-transform: rotateY(0deg) rotateX(0deg); + transform: rotateY(0deg) rotateX(0deg); + } +} +.ld.ld-flip-h { + -webkit-animation: ld-flip-h 1s infinite; + animation: ld-flip-h 1s infinite; +} +@keyframes ld-coin-v { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateX(0deg); + transform: rotateX(0deg); + } + 50% { + -webkit-transform: rotateX(1800deg); + transform: rotateX(1800deg); + } + 100% { + -webkit-transform: rotateX(3600deg); + transform: rotateX(3600deg); + } +} +@-webkit-keyframes ld-coin-v { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateX(0deg); + transform: rotateX(0deg); + } + 50% { + -webkit-transform: rotateX(1800deg); + transform: rotateX(1800deg); + } + 100% { + -webkit-transform: rotateX(3600deg); + transform: rotateX(3600deg); + } +} +.ld.ld-coin-v { + -webkit-animation: ld-coin-v 2s infinite; + animation: ld-coin-v 2s infinite; +} +@keyframes ld-coin-h { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateY(0deg); + transform: rotateY(0deg); + } + 50% { + -webkit-transform: rotateY(1800deg); + transform: rotateY(1800deg); + } + 100% { + -webkit-transform: rotateY(3600deg); + transform: rotateY(3600deg); + } +} +@-webkit-keyframes ld-coin-h { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: rotateY(0deg); + transform: rotateY(0deg); + } + 50% { + -webkit-transform: rotateY(1800deg); + transform: rotateY(1800deg); + } + 100% { + -webkit-transform: rotateY(3600deg); + transform: rotateY(3600deg); + } +} +.ld.ld-coin-h { + -webkit-animation: ld-coin-h 2s infinite; + animation: ld-coin-h 2s infinite; +} +@keyframes ld-heartbeat { + 0% { + -webkit-transform: scale(1.05); + transform: scale(1.05); + } + 5% { + -webkit-transform: scale(1.25); + transform: scale(1.25); + } + 39% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + } + 45% { + -webkit-transform: scale(1.15); + transform: scale(1.15); + } + 60% { + -webkit-transform: scale(1.05); + transform: scale(1.05); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +@-webkit-keyframes ld-heartbeat { + 0% { + -webkit-transform: scale(1.05); + transform: scale(1.05); + } + 5% { + -webkit-transform: scale(1.25); + transform: scale(1.25); + } + 39% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + } + 45% { + -webkit-transform: scale(1.15); + transform: scale(1.15); + } + 60% { + -webkit-transform: scale(1.05); + transform: scale(1.05); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +.ld.ld-heartbeat { + -webkit-animation: ld-heartbeat 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); + animation: ld-heartbeat 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); +} +@keyframes ld-radio { + 0% { + animation-timing-function: cubic-bezier(0.3, 0.27, 0.13, 1); + } + 0% { + -webkit-transform: scale(0.8); + transform: scale(0.8); + opacity: 0; + } + 5% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 100% { + -webkit-transform: scale(1.5); + transform: scale(1.5); + opacity: 0; + } +} +@-webkit-keyframes ld-radio { + 0% { + animation-timing-function: cubic-bezier(0.3, 0.27, 0.13, 1); + } + 0% { + -webkit-transform: scale(0.8); + transform: scale(0.8); + opacity: 0; + } + 5% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 100% { + -webkit-transform: scale(1.5); + transform: scale(1.5); + opacity: 0; + } +} +.ld.ld-radio { + position: relative; + display: inline-block; + margin: 0; + padding: 0; +} +.ld.ld-radio:after { + -webkit-animation: ld-radio 1s infinite; + animation: ld-radio 1s infinite; + content: " "; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: 6px solid #000; + border-radius: 50%; + background: none; +} +.ld.ld-radio.square:after { + border-radius: 0; +} +@keyframes ld-rotate { + 0%, 33%, 66%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 16%, 50%, 83% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + } + 16% { + -webkit-transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); + transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); + } + 33% { + -webkit-transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); + transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); + } + 50% { + -webkit-transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); + transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); + } + 66% { + -webkit-transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); + transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); + } + 83% { + -webkit-transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); + transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); + } + 100% { + -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + } +} +@-webkit-keyframes ld-rotate { + 0%, 33%, 66%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 16%, 50%, 83% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + } + 16% { + -webkit-transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); + transform: skewX(45deg) skewY(0deg) scaleX(1) scaleY(1); + } + 33% { + -webkit-transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); + transform: skewX(0deg) skewY(45deg) scaleX(1) scaleY(1); + } + 50% { + -webkit-transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); + transform: skewX(0deg) skewY(0deg) scaleX(0.5) scaleY(2); + } + 66% { + -webkit-transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); + transform: skewX(0deg) skewY(-45deg) scaleX(1) scaleY(1); + } + 83% { + -webkit-transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); + transform: skewX(-45deg) skewY(0deg) scaleX(1) scaleY(1); + } + 100% { + -webkit-transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + transform: skewX(0deg) skewY(0deg) scaleX(2) scaleY(0.5); + } +} +.ld.ld-rotate { + -webkit-animation: ld-rotate 1s infinite; + animation: ld-rotate 1s infinite; +} +@keyframes ld-rubber { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 20% { + -webkit-transform: scale(1.5, 1); + transform: scale(1.5, 1); + } + 30% { + -webkit-transform: scale(0.8, 1); + transform: scale(0.8, 1); + } + 40% { + -webkit-transform: scale(1.3, 1); + transform: scale(1.3, 1); + } + 50% { + -webkit-transform: scale(0.85, 1); + transform: scale(0.85, 1); + } + 60% { + -webkit-transform: scale(1.2, 1); + transform: scale(1.2, 1); + } + 70% { + -webkit-transform: scale(0.9, 1); + transform: scale(0.9, 1); + } + 80% { + -webkit-transform: scale(1.1, 1); + transform: scale(1.1, 1); + } + 90% { + -webkit-transform: scale(0.95, 1); + transform: scale(0.95, 1); + } + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } +} +@-webkit-keyframes ld-rubber { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 20% { + -webkit-transform: scale(1.5, 1); + transform: scale(1.5, 1); + } + 30% { + -webkit-transform: scale(0.8, 1); + transform: scale(0.8, 1); + } + 40% { + -webkit-transform: scale(1.3, 1); + transform: scale(1.3, 1); + } + 50% { + -webkit-transform: scale(0.85, 1); + transform: scale(0.85, 1); + } + 60% { + -webkit-transform: scale(1.2, 1); + transform: scale(1.2, 1); + } + 70% { + -webkit-transform: scale(0.9, 1); + transform: scale(0.9, 1); + } + 80% { + -webkit-transform: scale(1.1, 1); + transform: scale(1.1, 1); + } + 90% { + -webkit-transform: scale(0.95, 1); + transform: scale(0.95, 1); + } + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } +} +.ld.ld-rubber { + -webkit-animation: ld-rubber 1s ease-out infinite; + animation: ld-rubber 1s ease-out infinite; +} +@keyframes ld-shadow { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); + } + 50% { + animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); + } + 0% { + box-shadow: 0 0 0 0 rgba(0,0,0,0.2); + } + 50% { + box-shadow: 0 0 0 10px rgba(0,0,0,0.9); + } + 100% { + box-shadow: 0 0 0 0 rgba(0,0,0,0.2); + } +} +@-webkit-keyframes ld-shadow { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); + } + 50% { + animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1); + } + 0% { + box-shadow: 0 0 0 0 rgba(0,0,0,0.2); + } + 50% { + box-shadow: 0 0 0 10px rgba(0,0,0,0.9); + } + 100% { + box-shadow: 0 0 0 0 rgba(0,0,0,0.2); + } +} +.ld.ld-shadow { + -webkit-animation: ld-shadow 1s infinite; + animation: ld-shadow 1s infinite; + border-radius: 50%; +} +@keyframes ld-shadow-a { + 0% { + box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); + } + 8.33% { + box-shadow: 3px 1px 0 6px rgba(0,0,0,0.5); + } + 16.67% { + box-shadow: 2px 3px 0 6px rgba(0,0,0,0.5); + } + 25% { + box-shadow: 0px 3px 0 6px rgba(0,0,0,0.5); + } + 33.33% { + box-shadow: -1px 3px 0 6px rgba(0,0,0,0.5); + } + 41.67% { + box-shadow: -3px 1px 0 6px rgba(0,0,0,0.5); + } + 50% { + box-shadow: -3px 0px 0 6px rgba(0,0,0,0.5); + } + 58.33% { + box-shadow: -3px -1px 0 6px rgba(0,0,0,0.5); + } + 66.67% { + box-shadow: -2px -3px 0 6px rgba(0,0,0,0.5); + } + 75% { + box-shadow: 0px -3px 0 6px rgba(0,0,0,0.5); + } + 83.33% { + box-shadow: 2px -3px 0 6px rgba(0,0,0,0.5); + } + 91.67% { + box-shadow: 3px -2px 0 6px rgba(0,0,0,0.5); + } + 100% { + box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); + } +} +@-webkit-keyframes ld-shadow-a { + 0% { + box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); + } + 8.33% { + box-shadow: 3px 1px 0 6px rgba(0,0,0,0.5); + } + 16.67% { + box-shadow: 2px 3px 0 6px rgba(0,0,0,0.5); + } + 25% { + box-shadow: 0px 3px 0 6px rgba(0,0,0,0.5); + } + 33.33% { + box-shadow: -1px 3px 0 6px rgba(0,0,0,0.5); + } + 41.67% { + box-shadow: -3px 1px 0 6px rgba(0,0,0,0.5); + } + 50% { + box-shadow: -3px 0px 0 6px rgba(0,0,0,0.5); + } + 58.33% { + box-shadow: -3px -1px 0 6px rgba(0,0,0,0.5); + } + 66.67% { + box-shadow: -2px -3px 0 6px rgba(0,0,0,0.5); + } + 75% { + box-shadow: 0px -3px 0 6px rgba(0,0,0,0.5); + } + 83.33% { + box-shadow: 2px -3px 0 6px rgba(0,0,0,0.5); + } + 91.67% { + box-shadow: 3px -2px 0 6px rgba(0,0,0,0.5); + } + 100% { + box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); + } +} +.ld.ld-shadow-a { + -webkit-animation: ld-shadow-a 0.5s infinite; + animation: ld-shadow-a 0.5s infinite; + box-shadow: 3px 0px 0 6px rgba(0,0,0,0.5); + border-radius: 50%; +} +@keyframes ld-skew { + 0%, 50%, 100% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 25%, 75% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 0% { + -webkit-transform: skewX(20deg) scale(1); + transform: skewX(20deg) scale(1); + } + 25% { + -webkit-transform: skewX(0deg) scale(0.9); + transform: skewX(0deg) scale(0.9); + } + 50% { + -webkit-transform: skewX(-20deg) scale(1); + transform: skewX(-20deg) scale(1); + } + 75% { + -webkit-transform: skewX(0deg) scale(0.9); + transform: skewX(0deg) scale(0.9); + } + 100% { + -webkit-transform: skewX(20deg) scale(1); + transform: skewX(20deg) scale(1); + } +} +@-webkit-keyframes ld-skew { + 0%, 50%, 100% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 25%, 75% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 0% { + -webkit-transform: skewX(20deg) scale(1); + transform: skewX(20deg) scale(1); + } + 25% { + -webkit-transform: skewX(0deg) scale(0.9); + transform: skewX(0deg) scale(0.9); + } + 50% { + -webkit-transform: skewX(-20deg) scale(1); + transform: skewX(-20deg) scale(1); + } + 75% { + -webkit-transform: skewX(0deg) scale(0.9); + transform: skewX(0deg) scale(0.9); + } + 100% { + -webkit-transform: skewX(20deg) scale(1); + transform: skewX(20deg) scale(1); + } +} +.ld.ld-skew { + -webkit-animation: ld-skew 1s infinite; + animation: ld-skew 1s infinite; +} +@keyframes ld-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + 50% { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@-webkit-keyframes ld-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + 50% { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.ld.ld-spin { + -webkit-animation: ld-spin 1s infinite; + animation: ld-spin 1s infinite; +} +@keyframes ld-spin-fast { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + 50% { + -webkit-transform: rotate(900deg); + transform: rotate(900deg); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 100% { + -webkit-transform: rotate(1800deg); + transform: rotate(1800deg); + } +} +@-webkit-keyframes ld-spin-fast { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + 50% { + -webkit-transform: rotate(900deg); + transform: rotate(900deg); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 100% { + -webkit-transform: rotate(1800deg); + transform: rotate(1800deg); + } +} +.ld.ld-spin-fast { + -webkit-animation: ld-spin-fast 1s infinite; + animation: ld-spin-fast 1s infinite; +} +@keyframes ld-squeeze { + 0% { + -webkit-transform: scale(1, 0.5); + transform: scale(1, 0.5); + } + 50% { + -webkit-transform: scale(0.5, 1); + transform: scale(0.5, 1); + } + 100% { + -webkit-transform: scale(1, 0.5); + transform: scale(1, 0.5); + } +} +@-webkit-keyframes ld-squeeze { + 0% { + -webkit-transform: scale(1, 0.5); + transform: scale(1, 0.5); + } + 50% { + -webkit-transform: scale(0.5, 1); + transform: scale(0.5, 1); + } + 100% { + -webkit-transform: scale(1, 0.5); + transform: scale(1, 0.5); + } +} +.ld.ld-squeeze { + -webkit-animation: ld-squeeze 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); + animation: ld-squeeze 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); +} +@keyframes ld-surprise { + 0% { + -webkit-transform: skewX(0deg) scale(1); + transform: skewX(0deg) scale(1); + } + 10% { + -webkit-transform: skewX(-15deg) scale(0.8); + transform: skewX(-15deg) scale(0.8); + } + 20% { + -webkit-transform: skewX(-15deg) scale(0.8); + transform: skewX(-15deg) scale(0.8); + } + 30% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 40% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } + 50% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 60% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } + 70% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 80% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } + 90% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 100% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } +} +@-webkit-keyframes ld-surprise { + 0% { + -webkit-transform: skewX(0deg) scale(1); + transform: skewX(0deg) scale(1); + } + 10% { + -webkit-transform: skewX(-15deg) scale(0.8); + transform: skewX(-15deg) scale(0.8); + } + 20% { + -webkit-transform: skewX(-15deg) scale(0.8); + transform: skewX(-15deg) scale(0.8); + } + 30% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 40% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } + 50% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 60% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } + 70% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 80% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } + 90% { + -webkit-transform: skewX(15deg) scale(1.3); + transform: skewX(15deg) scale(1.3); + } + 100% { + -webkit-transform: skewX(-15deg) scale(1.3); + transform: skewX(-15deg) scale(1.3); + } +} +.ld.ld-surprise { + -webkit-animation: ld-surprise 1s infinite linear; + animation: ld-surprise 1s infinite linear; +} +@keyframes ld-tick { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 20% { + -webkit-transform: rotate(-30deg); + transform: rotate(-30deg); + } + 30% { + -webkit-transform: rotate(30deg); + transform: rotate(30deg); + } + 40% { + -webkit-transform: rotate(-21deg); + transform: rotate(-21deg); + } + 50% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + 60% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); + } + 70% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } + 80% { + -webkit-transform: rotate(-2deg); + transform: rotate(-2deg); + } + 90% { + -webkit-transform: rotate(1deg); + transform: rotate(1deg); + } + 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } +} +@-webkit-keyframes ld-tick { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 20% { + -webkit-transform: rotate(-30deg); + transform: rotate(-30deg); + } + 30% { + -webkit-transform: rotate(30deg); + transform: rotate(30deg); + } + 40% { + -webkit-transform: rotate(-21deg); + transform: rotate(-21deg); + } + 50% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + 60% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); + } + 70% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } + 80% { + -webkit-transform: rotate(-2deg); + transform: rotate(-2deg); + } + 90% { + -webkit-transform: rotate(1deg); + transform: rotate(1deg); + } + 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } +} +.ld.ld-tick { + -webkit-animation: ld-tick 1s ease-out infinite; + animation: ld-tick 1s ease-out infinite; +} +@keyframes ld-vortex-in { + 0% { + -webkit-transform: rotate(1800deg) scale(3); + transform: rotate(1800deg) scale(3); + opacity: 0; + } + 60% { + -webkit-transform: rotate(0deg) scale(1); + transform: rotate(0deg) scale(1); + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes ld-vortex-in { + 0% { + -webkit-transform: rotate(1800deg) scale(3); + transform: rotate(1800deg) scale(3); + opacity: 0; + } + 60% { + -webkit-transform: rotate(0deg) scale(1); + transform: rotate(0deg) scale(1); + opacity: 1; + } + 100% { + opacity: 0; + } +} +.ld.ld-vortex-in { + -webkit-animation: ld-vortex-in 2s infinite; + animation: ld-vortex-in 2s infinite; + animation-timing-function: cubic-bezier(0.3, 0, 1, 0.7); +} +@keyframes ld-vortex-out { + 0% { + -webkit-transform: rotate(0deg) scale(0); + transform: rotate(0deg) scale(0); + opacity: 1; + } + 60% { + -webkit-transform: rotate(1800deg) scale(1); + transform: rotate(1800deg) scale(1); + opacity: 1; + } + 100% { + -webkit-transform: rotate(1800deg) scale(1); + transform: rotate(1800deg) scale(1); + opacity: 0; + } +} +@-webkit-keyframes ld-vortex-out { + 0% { + -webkit-transform: rotate(0deg) scale(0); + transform: rotate(0deg) scale(0); + opacity: 1; + } + 60% { + -webkit-transform: rotate(1800deg) scale(1); + transform: rotate(1800deg) scale(1); + opacity: 1; + } + 100% { + -webkit-transform: rotate(1800deg) scale(1); + transform: rotate(1800deg) scale(1); + opacity: 0; + } +} +.ld.ld-vortex-out { + -webkit-animation: ld-vortex-out 2s infinite; + animation: ld-vortex-out 2s infinite; + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); +} +@keyframes ld-wrench { + 20%, 36%, 70%, 86% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 0%, 50%, 100% { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } +} +@-webkit-keyframes ld-wrench { + 20%, 36%, 70%, 86% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 0%, 50%, 100% { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } +} +.ld.ld-wrench { + -webkit-animation: ld-wrench 1s infinite; + animation: ld-wrench 1s infinite; +} +@keyframes ld-pulse { + 0% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + } + 50% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + } + 51% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + } + 100% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + } +} +@-webkit-keyframes ld-pulse { + 0% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + } + 50% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + } + 51% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + } + 100% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + } +} +.ld.ld-pulse { + -webkit-animation: ld-pulse 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); + animation: ld-pulse 0.8s infinite cubic-bezier(0.215, 0.61, 0.355, 1); +} +@keyframes ld-bounce { + 0%, 90% { + animation-timing-function: linear; + } + 10% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 50% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0%, 30%) scaleY(0.5); + transform: translate(0%, 30%) scaleY(0.5); + } + 10% { + -webkit-transform: translate(0%, 5%) scaleY(1.1); + transform: translate(0%, 5%) scaleY(1.1); + } + 50% { + -webkit-transform: translate(0%, -37%) scaleY(1.1); + transform: translate(0%, -37%) scaleY(1.1); + } + 90% { + -webkit-transform: translate(0%, 5%) scaleY(1.1); + transform: translate(0%, 5%) scaleY(1.1); + } + 100% { + -webkit-transform: translate(0%, 30%) scaleY(0.5); + transform: translate(0%, 30%) scaleY(0.5); + } +} +@-webkit-keyframes ld-bounce { + 0%, 90% { + animation-timing-function: linear; + } + 10% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 50% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0%, 30%) scaleY(0.5); + transform: translate(0%, 30%) scaleY(0.5); + } + 10% { + -webkit-transform: translate(0%, 5%) scaleY(1.1); + transform: translate(0%, 5%) scaleY(1.1); + } + 50% { + -webkit-transform: translate(0%, -37%) scaleY(1.1); + transform: translate(0%, -37%) scaleY(1.1); + } + 90% { + -webkit-transform: translate(0%, 5%) scaleY(1.1); + transform: translate(0%, 5%) scaleY(1.1); + } + 100% { + -webkit-transform: translate(0%, 30%) scaleY(0.5); + transform: translate(0%, 30%) scaleY(0.5); + } +} +.ld.ld-bounce { + -webkit-animation: ld-bounce 1s infinite; + animation: ld-bounce 1s infinite; +} +@keyframes ld-bounce-rtl { + 0% { + -webkit-transform: translate(160%, -40%); + transform: translate(160%, -40%); + } + 12.5% { + -webkit-transform: translate(120%, -23%); + transform: translate(120%, -23%); + } + 25% { + -webkit-transform: translate(80%, 0%); + transform: translate(80%, 0%); + } + 37.5% { + -webkit-transform: translate(50%, -23%); + transform: translate(50%, -23%); + } + 50% { + -webkit-transform: translate(0%, -40%); + transform: translate(0%, -40%); + } + 62.5% { + -webkit-transform: translate(-50%, -23%); + transform: translate(-50%, -23%); + } + 75% { + -webkit-transform: translate(-80%, 0%); + transform: translate(-80%, 0%); + } + 87.5% { + -webkit-transform: translate(-120%, -23%); + transform: translate(-120%, -23%); + } + 100% { + -webkit-transform: translate(-160%, -40%); + transform: translate(-160%, -40%); + } +} +@-webkit-keyframes ld-bounce-rtl { + 0% { + -webkit-transform: translate(160%, -40%); + transform: translate(160%, -40%); + } + 12.5% { + -webkit-transform: translate(120%, -23%); + transform: translate(120%, -23%); + } + 25% { + -webkit-transform: translate(80%, 0%); + transform: translate(80%, 0%); + } + 37.5% { + -webkit-transform: translate(50%, -23%); + transform: translate(50%, -23%); + } + 50% { + -webkit-transform: translate(0%, -40%); + transform: translate(0%, -40%); + } + 62.5% { + -webkit-transform: translate(-50%, -23%); + transform: translate(-50%, -23%); + } + 75% { + -webkit-transform: translate(-80%, 0%); + transform: translate(-80%, 0%); + } + 87.5% { + -webkit-transform: translate(-120%, -23%); + transform: translate(-120%, -23%); + } + 100% { + -webkit-transform: translate(-160%, -40%); + transform: translate(-160%, -40%); + } +} +.ld.ld-bounce-rtl { + -webkit-animation: ld-bounce-rtl 1s infinite linear; + animation: ld-bounce-rtl 1s infinite linear; +} +@keyframes ld-bounce-ltr { + 0% { + -webkit-transform: translate(-160%, -40%); + transform: translate(-160%, -40%); + } + 12.5% { + -webkit-transform: translate(-120%, -23%); + transform: translate(-120%, -23%); + } + 25% { + -webkit-transform: translate(-100%, 0%); + transform: translate(-100%, 0%); + } + 37.5% { + -webkit-transform: translate(-50%, -23%); + transform: translate(-50%, -23%); + } + 50% { + -webkit-transform: translate(0%, -40%); + transform: translate(0%, -40%); + } + 62.5% { + -webkit-transform: translate(50%, -23%); + transform: translate(50%, -23%); + } + 75% { + -webkit-transform: translate(100%, 0%); + transform: translate(100%, 0%); + } + 87.5% { + -webkit-transform: translate(120%, -23%); + transform: translate(120%, -23%); + } + 100% { + -webkit-transform: translate(160%, -40%); + transform: translate(160%, -40%); + } +} +@-webkit-keyframes ld-bounce-ltr { + 0% { + -webkit-transform: translate(-160%, -40%); + transform: translate(-160%, -40%); + } + 12.5% { + -webkit-transform: translate(-120%, -23%); + transform: translate(-120%, -23%); + } + 25% { + -webkit-transform: translate(-100%, 0%); + transform: translate(-100%, 0%); + } + 37.5% { + -webkit-transform: translate(-50%, -23%); + transform: translate(-50%, -23%); + } + 50% { + -webkit-transform: translate(0%, -40%); + transform: translate(0%, -40%); + } + 62.5% { + -webkit-transform: translate(50%, -23%); + transform: translate(50%, -23%); + } + 75% { + -webkit-transform: translate(100%, 0%); + transform: translate(100%, 0%); + } + 87.5% { + -webkit-transform: translate(120%, -23%); + transform: translate(120%, -23%); + } + 100% { + -webkit-transform: translate(160%, -40%); + transform: translate(160%, -40%); + } +} +.ld.ld-bounce-ltr { + -webkit-animation: ld-bounce-ltr 1s infinite linear; + animation: ld-bounce-ltr 1s infinite linear; +} +@keyframes ld-bounce-a-px { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 12.5%, 37.5%, 62.5%, 87.5% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } + 12.5% { + -webkit-transform: translate(5%, -28%); + transform: translate(5%, -28%); + } + 25% { + -webkit-transform: translate(10%, 0%); + transform: translate(10%, 0%); + } + 37.5% { + -webkit-transform: translate(5%, -28%); + transform: translate(5%, -28%); + } + 50% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } + 62.5% { + -webkit-transform: translate(-5%, -28%); + transform: translate(-5%, -28%); + } + 75% { + -webkit-transform: translate(-10%, 0%); + transform: translate(-10%, 0%); + } + 87.5% { + -webkit-transform: translate(-5%, -28%); + transform: translate(-5%, -28%); + } + 100% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } +} +@-webkit-keyframes ld-bounce-a-px { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 12.5%, 37.5%, 62.5%, 87.5% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } + 12.5% { + -webkit-transform: translate(5%, -28%); + transform: translate(5%, -28%); + } + 25% { + -webkit-transform: translate(10%, 0%); + transform: translate(10%, 0%); + } + 37.5% { + -webkit-transform: translate(5%, -28%); + transform: translate(5%, -28%); + } + 50% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } + 62.5% { + -webkit-transform: translate(-5%, -28%); + transform: translate(-5%, -28%); + } + 75% { + -webkit-transform: translate(-10%, 0%); + transform: translate(-10%, 0%); + } + 87.5% { + -webkit-transform: translate(-5%, -28%); + transform: translate(-5%, -28%); + } + 100% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } +} +.ld.ld-bounce-a-px { + -webkit-animation: ld-bounce-a-px 2s infinite; + animation: ld-bounce-a-px 2s infinite; +} +@keyframes ld-float { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: linear; + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } + 30% { + -webkit-transform: translate(0, -10%); + transform: translate(0, -10%); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 50% { + -webkit-transform: translate(0, -10%); + transform: translate(0, -10%); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } +} +@-webkit-keyframes ld-float { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: linear; + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } + 30% { + -webkit-transform: translate(0, -10%); + transform: translate(0, -10%); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 50% { + -webkit-transform: translate(0, -10%); + transform: translate(0, -10%); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } +} +.ld.ld-float { + -webkit-animation: ld-float 1s infinite; + animation: ld-float 1s infinite; +} +@keyframes ld-hit { + 0% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + -webkit-transform: scale(0) translate(0, 0) skewX(0); + transform: scale(0) translate(0, 0) skewX(0); + } + 20% { + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 50% { + animation-timing-function: cubic-bezier(1, 0, 1, 0.5); + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 100% { + -webkit-transform: scale(1) translate(0, 200%) skewX(20deg); + transform: scale(1) translate(0, 200%) skewX(20deg); + } +} +@-webkit-keyframes ld-hit { + 0% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + -webkit-transform: scale(0) translate(0, 0) skewX(0); + transform: scale(0) translate(0, 0) skewX(0); + } + 20% { + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 50% { + animation-timing-function: cubic-bezier(1, 0, 1, 0.5); + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 100% { + -webkit-transform: scale(1) translate(0, 200%) skewX(20deg); + transform: scale(1) translate(0, 200%) skewX(20deg); + } +} +.ld.ld-hit { + -webkit-animation: ld-hit 2s infinite; + animation: ld-hit 2s infinite; +} +@keyframes ld-jelly { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 16.6% { + -webkit-transform: translate(-30%, 0) skewX(30deg); + transform: translate(-30%, 0) skewX(30deg); + } + 33.3% { + -webkit-transform: translate(25%, 0) skewX(-20deg); + transform: translate(25%, 0) skewX(-20deg); + } + 50% { + -webkit-transform: translate(-12%, 0) skewX(10deg); + transform: translate(-12%, 0) skewX(10deg); + } + 66.6% { + -webkit-transform: translate(6%, 0) skewX(-5deg); + transform: translate(6%, 0) skewX(-5deg); + } + 83.3% { + -webkit-transform: translate(-2.5%, 0) skewX(2deg); + transform: translate(-2.5%, 0) skewX(2deg); + } + 100% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } +} +@-webkit-keyframes ld-jelly { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 16.6% { + -webkit-transform: translate(-30%, 0) skewX(30deg); + transform: translate(-30%, 0) skewX(30deg); + } + 33.3% { + -webkit-transform: translate(25%, 0) skewX(-20deg); + transform: translate(25%, 0) skewX(-20deg); + } + 50% { + -webkit-transform: translate(-12%, 0) skewX(10deg); + transform: translate(-12%, 0) skewX(10deg); + } + 66.6% { + -webkit-transform: translate(6%, 0) skewX(-5deg); + transform: translate(6%, 0) skewX(-5deg); + } + 83.3% { + -webkit-transform: translate(-2.5%, 0) skewX(2deg); + transform: translate(-2.5%, 0) skewX(2deg); + } + 100% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } +} +.ld.ld-jelly { + -webkit-animation: ld-jelly 1s infinite linear; + animation: ld-jelly 1s infinite linear; +} +@keyframes ld-jump { + 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { + animation-timing-function: ease-out; + } + 14%, 38%, 56%, 70%, 81%, 90%, 97% { + animation-timing-function: ease-in; + } + 0% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 14% { + -webkit-transform: translateY(-27%); + transform: translateY(-27%); + } + 28% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 38% { + -webkit-transform: translateY(-20%); + transform: translateY(-20%); + } + 48% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 56% { + -webkit-transform: translateY(-16%); + transform: translateY(-16%); + } + 64% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 70% { + -webkit-transform: translateY(-12%); + transform: translateY(-12%); + } + 76% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 81% { + -webkit-transform: translateY(-7.5%); + transform: translateY(-7.5%); + } + 86% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 90% { + -webkit-transform: translateY(-3%); + transform: translateY(-3%); + } + 93% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 97% { + -webkit-transform: translateY(-1.5%); + transform: translateY(-1.5%); + } + 100% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } +} +@-webkit-keyframes ld-jump { + 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { + animation-timing-function: ease-out; + } + 14%, 38%, 56%, 70%, 81%, 90%, 97% { + animation-timing-function: ease-in; + } + 0% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 14% { + -webkit-transform: translateY(-27%); + transform: translateY(-27%); + } + 28% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 38% { + -webkit-transform: translateY(-20%); + transform: translateY(-20%); + } + 48% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 56% { + -webkit-transform: translateY(-16%); + transform: translateY(-16%); + } + 64% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 70% { + -webkit-transform: translateY(-12%); + transform: translateY(-12%); + } + 76% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 81% { + -webkit-transform: translateY(-7.5%); + transform: translateY(-7.5%); + } + 86% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 90% { + -webkit-transform: translateY(-3%); + transform: translateY(-3%); + } + 93% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } + 97% { + -webkit-transform: translateY(-1.5%); + transform: translateY(-1.5%); + } + 100% { + -webkit-transform: translateY(0%); + transform: translateY(0%); + } +} +.ld.ld-jump { + -webkit-animation: ld-jump 1.5s ease-in infinite; + animation: ld-jump 1.5s ease-in infinite; +} +@keyframes ld-orbit { + 0% { + -webkit-transform: translate(30%, 0%) rotate(0deg); + transform: translate(30%, 0%) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(21%, 21%) rotate(45deg); + transform: translate(21%, 21%) rotate(45deg); + } + 25% { + -webkit-transform: translate(0%, 30%) rotate(90deg); + transform: translate(0%, 30%) rotate(90deg); + } + 37.5% { + -webkit-transform: translate(-21%, 21%) rotate(135deg); + transform: translate(-21%, 21%) rotate(135deg); + } + 50% { + -webkit-transform: translate(-30%, 0%) rotate(180deg); + transform: translate(-30%, 0%) rotate(180deg); + } + 62.5% { + -webkit-transform: translate(-21%, -21%) rotate(225deg); + transform: translate(-21%, -21%) rotate(225deg); + } + 75% { + -webkit-transform: translate(0%, -30%) rotate(270deg); + transform: translate(0%, -30%) rotate(270deg); + } + 87.5% { + -webkit-transform: translate(21%, -21%) rotate(315deg); + transform: translate(21%, -21%) rotate(315deg); + } + 100% { + -webkit-transform: translate(30%, 0%) rotate(360deg); + transform: translate(30%, 0%) rotate(360deg); + } +} +@-webkit-keyframes ld-orbit { + 0% { + -webkit-transform: translate(30%, 0%) rotate(0deg); + transform: translate(30%, 0%) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(21%, 21%) rotate(45deg); + transform: translate(21%, 21%) rotate(45deg); + } + 25% { + -webkit-transform: translate(0%, 30%) rotate(90deg); + transform: translate(0%, 30%) rotate(90deg); + } + 37.5% { + -webkit-transform: translate(-21%, 21%) rotate(135deg); + transform: translate(-21%, 21%) rotate(135deg); + } + 50% { + -webkit-transform: translate(-30%, 0%) rotate(180deg); + transform: translate(-30%, 0%) rotate(180deg); + } + 62.5% { + -webkit-transform: translate(-21%, -21%) rotate(225deg); + transform: translate(-21%, -21%) rotate(225deg); + } + 75% { + -webkit-transform: translate(0%, -30%) rotate(270deg); + transform: translate(0%, -30%) rotate(270deg); + } + 87.5% { + -webkit-transform: translate(21%, -21%) rotate(315deg); + transform: translate(21%, -21%) rotate(315deg); + } + 100% { + -webkit-transform: translate(30%, 0%) rotate(360deg); + transform: translate(30%, 0%) rotate(360deg); + } +} +.ld.ld-orbit { + -webkit-animation: ld-orbit 1s infinite linear; + animation: ld-orbit 1s infinite linear; +} +@keyframes ld-rush-rtl { + 0% { + -webkit-transform: translate(200%, 0) skewX(-45deg); + transform: translate(200%, 0) skewX(-45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(-40%, 0) skewX(35deg); + transform: translate(-40%, 0) skewX(35deg); + } + 45% { + -webkit-transform: translate(20%, 0) skewX(-15deg); + transform: translate(20%, 0) skewX(-15deg); + } + 60% { + -webkit-transform: translate(-10%, 0) skewX(7deg); + transform: translate(-10%, 0) skewX(7deg); + } + 80% { + -webkit-transform: translate(0%, 0) skewX(0deg); + transform: translate(0%, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(-250%, 0) skewX(-45deg); + transform: translate(-250%, 0) skewX(-45deg); + } +} +@-webkit-keyframes ld-rush-rtl { + 0% { + -webkit-transform: translate(200%, 0) skewX(-45deg); + transform: translate(200%, 0) skewX(-45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(-40%, 0) skewX(35deg); + transform: translate(-40%, 0) skewX(35deg); + } + 45% { + -webkit-transform: translate(20%, 0) skewX(-15deg); + transform: translate(20%, 0) skewX(-15deg); + } + 60% { + -webkit-transform: translate(-10%, 0) skewX(7deg); + transform: translate(-10%, 0) skewX(7deg); + } + 80% { + -webkit-transform: translate(0%, 0) skewX(0deg); + transform: translate(0%, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(-250%, 0) skewX(-45deg); + transform: translate(-250%, 0) skewX(-45deg); + } +} +.ld.ld-rush-rtl { + -webkit-animation: ld-rush-rtl 1.5s infinite linear; + animation: ld-rush-rtl 1.5s infinite linear; +} +@keyframes ld-rush-ltr { + 0% { + -webkit-transform: translate(-200%, 0) skewX(45deg); + transform: translate(-200%, 0) skewX(45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(40%, 0) skewX(-35deg); + transform: translate(40%, 0) skewX(-35deg); + } + 45% { + -webkit-transform: translate(-20%, 0) skewX(15deg); + transform: translate(-20%, 0) skewX(15deg); + } + 60% { + -webkit-transform: translate(10%, 0) skewX(-7deg); + transform: translate(10%, 0) skewX(-7deg); + } + 80% { + -webkit-transform: translate(0%, 0) skewX(0deg); + transform: translate(0%, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(250%, 0) skewX(45deg); + transform: translate(250%, 0) skewX(45deg); + } +} +@-webkit-keyframes ld-rush-ltr { + 0% { + -webkit-transform: translate(-200%, 0) skewX(45deg); + transform: translate(-200%, 0) skewX(45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(40%, 0) skewX(-35deg); + transform: translate(40%, 0) skewX(-35deg); + } + 45% { + -webkit-transform: translate(-20%, 0) skewX(15deg); + transform: translate(-20%, 0) skewX(15deg); + } + 60% { + -webkit-transform: translate(10%, 0) skewX(-7deg); + transform: translate(10%, 0) skewX(-7deg); + } + 80% { + -webkit-transform: translate(0%, 0) skewX(0deg); + transform: translate(0%, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(250%, 0) skewX(45deg); + transform: translate(250%, 0) skewX(45deg); + } +} +.ld.ld-rush-ltr { + -webkit-animation: ld-rush-ltr 1.5s infinite linear; + animation: ld-rush-ltr 1.5s infinite linear; +} +@keyframes ld-shake { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 16.6% { + -webkit-transform: translate(-35%, 0); + transform: translate(-35%, 0); + } + 33.3% { + -webkit-transform: translate(25%, 0); + transform: translate(25%, 0); + } + 50% { + -webkit-transform: translate(-12%, 0); + transform: translate(-12%, 0); + } + 66.6% { + -webkit-transform: translate(6%, 0); + transform: translate(6%, 0); + } + 83.3% { + -webkit-transform: translate(-2.5%, 0); + transform: translate(-2.5%, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-shake { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 16.6% { + -webkit-transform: translate(-35%, 0); + transform: translate(-35%, 0); + } + 33.3% { + -webkit-transform: translate(25%, 0); + transform: translate(25%, 0); + } + 50% { + -webkit-transform: translate(-12%, 0); + transform: translate(-12%, 0); + } + 66.6% { + -webkit-transform: translate(6%, 0); + transform: translate(6%, 0); + } + 83.3% { + -webkit-transform: translate(-2.5%, 0); + transform: translate(-2.5%, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-shake { + -webkit-animation: ld-shake 1s infinite linear; + animation: ld-shake 1s infinite linear; +} +@keyframes ld-slide-ltr { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(200%, 0); + transform: translate(200%, 0); + } + 50% { + -webkit-transform: translate(-200%, 0); + transform: translate(-200%, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-ltr { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(200%, 0); + transform: translate(200%, 0); + } + 50% { + -webkit-transform: translate(-200%, 0); + transform: translate(-200%, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-ltr { + -webkit-animation: ld-slide-ltr 1s infinite; + animation: ld-slide-ltr 1s infinite; +} +@keyframes ld-slide-rtl { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(-200%, 0); + transform: translate(-200%, 0); + } + 50% { + -webkit-transform: translate(200%, 0); + transform: translate(200%, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-rtl { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(-200%, 0); + transform: translate(-200%, 0); + } + 50% { + -webkit-transform: translate(200%, 0); + transform: translate(200%, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-rtl { + -webkit-animation: ld-slide-rtl 1s infinite; + animation: ld-slide-rtl 1s infinite; +} +@keyframes ld-slide-btt { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, -200%); + transform: translate(0, -200%); + } + 50% { + -webkit-transform: translate(0, 200%); + transform: translate(0, 200%); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-btt { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, -200%); + transform: translate(0, -200%); + } + 50% { + -webkit-transform: translate(0, 200%); + transform: translate(0, 200%); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-btt { + -webkit-animation: ld-slide-btt 1s infinite; + animation: ld-slide-btt 1s infinite; +} +@keyframes ld-slide-ttb { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, 200%); + transform: translate(0, 200%); + } + 50% { + -webkit-transform: translate(0, -200%); + transform: translate(0, -200%); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-ttb { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, 200%); + transform: translate(0, 200%); + } + 50% { + -webkit-transform: translate(0, -200%); + transform: translate(0, -200%); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-ttb { + -webkit-animation: ld-slide-ttb 1s infinite; + animation: ld-slide-ttb 1s infinite; +} +@keyframes ld-tremble { + 0% { + -webkit-transform: translate(1%, 1%); + transform: translate(1%, 1%); + } + 5% { + -webkit-transform: translate(0%, 1%); + transform: translate(0%, 1%); + } + 10% { + -webkit-transform: translate(1%, 2%); + transform: translate(1%, 2%); + } + 15% { + -webkit-transform: translate(2%, 1%); + transform: translate(2%, 1%); + } + 20% { + -webkit-transform: translate(3%, 0%); + transform: translate(3%, 0%); + } + 25% { + -webkit-transform: translate(1%, 2%); + transform: translate(1%, 2%); + } + 30% { + -webkit-transform: translate(1%, 3%); + transform: translate(1%, 3%); + } + 35% { + -webkit-transform: translate(0%, 1%); + transform: translate(0%, 1%); + } + 40% { + -webkit-transform: translate(1%, 1%); + transform: translate(1%, 1%); + } + 45% { + -webkit-transform: translate(1%, 0%); + transform: translate(1%, 0%); + } + 50% { + -webkit-transform: translate(2%, 1%); + transform: translate(2%, 1%); + } + 55% { + -webkit-transform: translate(1%, 2%); + transform: translate(1%, 2%); + } + 60% { + -webkit-transform: translate(3%, 1%); + transform: translate(3%, 1%); + } + 65% { + -webkit-transform: translate(0%, 2%); + transform: translate(0%, 2%); + } + 70% { + -webkit-transform: translate(3%, 0%); + transform: translate(3%, 0%); + } + 75% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } + 80% { + -webkit-transform: translate(2%, 3%); + transform: translate(2%, 3%); + } + 85% { + -webkit-transform: translate(1%, 0%); + transform: translate(1%, 0%); + } + 90% { + -webkit-transform: translate(0%, 2%); + transform: translate(0%, 2%); + } + 95% { + -webkit-transform: translate(3%, 2%); + transform: translate(3%, 2%); + } +} +@-webkit-keyframes ld-tremble { + 0% { + -webkit-transform: translate(1%, 1%); + transform: translate(1%, 1%); + } + 5% { + -webkit-transform: translate(0%, 1%); + transform: translate(0%, 1%); + } + 10% { + -webkit-transform: translate(1%, 2%); + transform: translate(1%, 2%); + } + 15% { + -webkit-transform: translate(2%, 1%); + transform: translate(2%, 1%); + } + 20% { + -webkit-transform: translate(3%, 0%); + transform: translate(3%, 0%); + } + 25% { + -webkit-transform: translate(1%, 2%); + transform: translate(1%, 2%); + } + 30% { + -webkit-transform: translate(1%, 3%); + transform: translate(1%, 3%); + } + 35% { + -webkit-transform: translate(0%, 1%); + transform: translate(0%, 1%); + } + 40% { + -webkit-transform: translate(1%, 1%); + transform: translate(1%, 1%); + } + 45% { + -webkit-transform: translate(1%, 0%); + transform: translate(1%, 0%); + } + 50% { + -webkit-transform: translate(2%, 1%); + transform: translate(2%, 1%); + } + 55% { + -webkit-transform: translate(1%, 2%); + transform: translate(1%, 2%); + } + 60% { + -webkit-transform: translate(3%, 1%); + transform: translate(3%, 1%); + } + 65% { + -webkit-transform: translate(0%, 2%); + transform: translate(0%, 2%); + } + 70% { + -webkit-transform: translate(3%, 0%); + transform: translate(3%, 0%); + } + 75% { + -webkit-transform: translate(0%, 0%); + transform: translate(0%, 0%); + } + 80% { + -webkit-transform: translate(2%, 3%); + transform: translate(2%, 3%); + } + 85% { + -webkit-transform: translate(1%, 0%); + transform: translate(1%, 0%); + } + 90% { + -webkit-transform: translate(0%, 2%); + transform: translate(0%, 2%); + } + 95% { + -webkit-transform: translate(3%, 2%); + transform: translate(3%, 2%); + } +} +.ld.ld-tremble { + -webkit-animation: ld-tremble 1s infinite; + animation: ld-tremble 1s infinite; +} +@keyframes ld-wander-h { + 0% { + -webkit-transform: translate(-35%, 0); + transform: translate(-35%, 0); + } + 50% { + -webkit-transform: translate(35%, 0); + transform: translate(35%, 0); + } + 100% { + -webkit-transform: translate(-35%, 0); + transform: translate(-35%, 0); + } +} +@-webkit-keyframes ld-wander-h { + 0% { + -webkit-transform: translate(-35%, 0); + transform: translate(-35%, 0); + } + 50% { + -webkit-transform: translate(35%, 0); + transform: translate(35%, 0); + } + 100% { + -webkit-transform: translate(-35%, 0); + transform: translate(-35%, 0); + } +} +.ld.ld-wander-h { + -webkit-animation: ld-wander-h 1s infinite ease-out; + animation: ld-wander-h 1s infinite ease-out; +} +@keyframes ld-wander-v { + 0% { + -webkit-transform: translate(0, -35%); + transform: translate(0, -35%); + } + 50% { + -webkit-transform: translate(0, 35%); + transform: translate(0, 35%); + } + 100% { + -webkit-transform: translate(0, -35%); + transform: translate(0, -35%); + } +} +@-webkit-keyframes ld-wander-v { + 0% { + -webkit-transform: translate(0, -35%); + transform: translate(0, -35%); + } + 50% { + -webkit-transform: translate(0, 35%); + transform: translate(0, 35%); + } + 100% { + -webkit-transform: translate(0, -35%); + transform: translate(0, -35%); + } +} +.ld.ld-wander-v { + -webkit-animation: ld-wander-v 1s infinite ease-out; + animation: ld-wander-v 1s infinite ease-out; +} +@keyframes ld-jingle { + 0% { + -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + } + 4% { + -webkit-transform: translate(0, -40%) rotate(11deg) translate(0, 40%); + transform: translate(0, -40%) rotate(11deg) translate(0, 40%); + } + 10% { + -webkit-transform: translate(0, -40%) rotate(15deg) translate(0, 40%); + transform: translate(0, -40%) rotate(15deg) translate(0, 40%); + } + 18% { + -webkit-transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); + } + 20% { + -webkit-transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); + } + 21% { + -webkit-transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); + } + 22% { + -webkit-transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); + } + 24% { + -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + } + 26% { + -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + } + 28% { + -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + } + 30% { + -webkit-transform: translate(0, -40%) rotate(10deg) translate(0, 40%); + transform: translate(0, -40%) rotate(10deg) translate(0, 40%); + } + 31% { + -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + } + 33% { + -webkit-transform: translate(0, -40%) rotate(5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(5deg) translate(0, 40%); + } + 34% { + -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + } + 36% { + -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + } + 39% { + -webkit-transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); + } + 40% { + -webkit-transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); + } + 44% { + -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + } + 47% { + -webkit-transform: translate(0, -40%) rotate(7deg) translate(0, 40%); + transform: translate(0, -40%) rotate(7deg) translate(0, 40%); + } + 56% { + -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + } + 63% { + -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + } + 75% { + -webkit-transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); + } + 100% { + -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + } +} +@-webkit-keyframes ld-jingle { + 0% { + -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + } + 4% { + -webkit-transform: translate(0, -40%) rotate(11deg) translate(0, 40%); + transform: translate(0, -40%) rotate(11deg) translate(0, 40%); + } + 10% { + -webkit-transform: translate(0, -40%) rotate(15deg) translate(0, 40%); + transform: translate(0, -40%) rotate(15deg) translate(0, 40%); + } + 18% { + -webkit-transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-11deg) translate(0, 40%); + } + 20% { + -webkit-transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-13deg) translate(0, 40%); + } + 21% { + -webkit-transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-12deg) translate(0, 40%); + } + 22% { + -webkit-transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-10deg) translate(0, 40%); + } + 24% { + -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + } + 26% { + -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + } + 28% { + -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + } + 30% { + -webkit-transform: translate(0, -40%) rotate(10deg) translate(0, 40%); + transform: translate(0, -40%) rotate(10deg) translate(0, 40%); + } + 31% { + -webkit-transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + transform: translate(0, -40%) rotate(9deg) translate(0, 40%); + } + 33% { + -webkit-transform: translate(0, -40%) rotate(5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(5deg) translate(0, 40%); + } + 34% { + -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + } + 36% { + -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + } + 39% { + -webkit-transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-8deg) translate(0, 40%); + } + 40% { + -webkit-transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-7deg) translate(0, 40%); + } + 44% { + -webkit-transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + transform: translate(0, -40%) rotate(3deg) translate(0, 40%); + } + 47% { + -webkit-transform: translate(0, -40%) rotate(7deg) translate(0, 40%); + transform: translate(0, -40%) rotate(7deg) translate(0, 40%); + } + 56% { + -webkit-transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-5deg) translate(0, 40%); + } + 63% { + -webkit-transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + transform: translate(0, -40%) rotate(1deg) translate(0, 40%); + } + 75% { + -webkit-transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); + transform: translate(0, -40%) rotate(-1deg) translate(0, 40%); + } + 100% { + -webkit-transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + transform: translate(0, -40%) rotate(0deg) translate(0, 40%); + } +} +.ld.ld-jingle { + -webkit-animation: ld-jingle 1s infinite; + animation: ld-jingle 1s infinite; +} +@keyframes ld-swim { + 0% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(5%, -10%) rotate(3deg); + transform: translate(5%, -10%) rotate(3deg); + } + 25% { + -webkit-transform: translate(0, -15%) rotate(6deg); + transform: translate(0, -15%) rotate(6deg); + } + 37.5% { + -webkit-transform: translate(-5%, -10%) rotate(3deg); + transform: translate(-5%, -10%) rotate(3deg); + } + 50% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 62.5% { + -webkit-transform: translate(5%, 10%) rotate(-3deg); + transform: translate(5%, 10%) rotate(-3deg); + } + 75% { + -webkit-transform: translate(0, 15%) rotate(-6deg); + transform: translate(0, 15%) rotate(-6deg); + } + 87.5% { + -webkit-transform: translate(-5%, 10%) rotate(-3deg); + transform: translate(-5%, 10%) rotate(-3deg); + } + 100% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } +} +@-webkit-keyframes ld-swim { + 0% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(5%, -10%) rotate(3deg); + transform: translate(5%, -10%) rotate(3deg); + } + 25% { + -webkit-transform: translate(0, -15%) rotate(6deg); + transform: translate(0, -15%) rotate(6deg); + } + 37.5% { + -webkit-transform: translate(-5%, -10%) rotate(3deg); + transform: translate(-5%, -10%) rotate(3deg); + } + 50% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 62.5% { + -webkit-transform: translate(5%, 10%) rotate(-3deg); + transform: translate(5%, 10%) rotate(-3deg); + } + 75% { + -webkit-transform: translate(0, 15%) rotate(-6deg); + transform: translate(0, 15%) rotate(-6deg); + } + 87.5% { + -webkit-transform: translate(-5%, 10%) rotate(-3deg); + transform: translate(-5%, 10%) rotate(-3deg); + } + 100% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } +} +.ld.ld-swim { + -webkit-animation: ld-swim 3s infinite linear; + animation: ld-swim 3s infinite linear; +} +@keyframes ld-leaf { + 0% { + -webkit-transform: translate(-14.7%, -117%) rotate(-0.3deg); + transform: translate(-14.7%, -117%) rotate(-0.3deg); + } + 1% { + -webkit-transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); + } + 2% { + -webkit-transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); + transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); + } + 3% { + -webkit-transform: translate(-13.5%, -100.5%) rotate(-1.5deg); + transform: translate(-13.5%, -100.5%) rotate(-1.5deg); + } + 5% { + -webkit-transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); + } + 7% { + -webkit-transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); + } + 10% { + -webkit-transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); + transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); + } + 12% { + -webkit-transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); + transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); + } + 13% { + -webkit-transform: translate(14.7%, -75%) rotate(-29.7deg); + transform: translate(14.7%, -75%) rotate(-29.7deg); + } + 14% { + -webkit-transform: translate(15%, -75%) rotate(-30deg); + transform: translate(15%, -75%) rotate(-30deg); + } + 15% { + -webkit-transform: translate(14.399999999999999%, -69%) rotate(0.6deg); + transform: translate(14.399999999999999%, -69%) rotate(0.6deg); + } + 16% { + -webkit-transform: translate(13.8%, -58.5%) rotate(1.2deg); + transform: translate(13.8%, -58.5%) rotate(1.2deg); + } + 19% { + -webkit-transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); + transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); + } + 21% { + -webkit-transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); + } + 24% { + -webkit-transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); + transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); + } + 26% { + -webkit-transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); + transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); + } + 27% { + -webkit-transform: translate(-14.7%, -31.5%) rotate(29.7deg); + transform: translate(-14.7%, -31.5%) rotate(29.7deg); + } + 28% { + -webkit-transform: translate(-15%, -31.5%) rotate(30deg); + transform: translate(-15%, -31.5%) rotate(30deg); + } + 29% { + -webkit-transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); + } + 30% { + -webkit-transform: translate(-13.8%, -16.5%) rotate(-1.2deg); + transform: translate(-13.8%, -16.5%) rotate(-1.2deg); + } + 31% { + -webkit-transform: translate(-13.5%, -15%) rotate(-1.5deg); + transform: translate(-13.5%, -15%) rotate(-1.5deg); + } + 33% { + -webkit-transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); + } + 36% { + -webkit-transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); + } + 38% { + -webkit-transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); + transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); + } + 40% { + -webkit-transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); + transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); + } + 41% { + -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); + transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); + } + 42% { + -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); + transform: translate(15%, 10.500000000000002%) rotate(-30deg); + } + 43% { + -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); + transform: translate(15%, 10.500000000000002%) rotate(-30deg); + } + 43% { + -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); + transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); + } + 43% { + -webkit-transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); + transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); + } + 45% { + -webkit-transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); + transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); + } + 45% { + -webkit-transform: translate(13.5%, 27%) rotate(1.5deg); + transform: translate(13.5%, 27%) rotate(1.5deg); + } + 48% { + -webkit-transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); + transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); + } + 50% { + -webkit-transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); + } + 52% { + -webkit-transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); + transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); + } + 54% { + -webkit-transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); + transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); + } + 56% { + -webkit-transform: translate(-14.7%, 54%) rotate(29.7deg); + transform: translate(-14.7%, 54%) rotate(29.7deg); + } + 57% { + -webkit-transform: translate(-14.7%, 54%) rotate(-0.3deg); + transform: translate(-14.7%, 54%) rotate(-0.3deg); + } + 58% { + -webkit-transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); + } + 59% { + -webkit-transform: translate(-13.5%, 70.5%) rotate(-1.5deg); + transform: translate(-13.5%, 70.5%) rotate(-1.5deg); + } + 62% { + -webkit-transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); + } + 64% { + -webkit-transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); + } + 67% { + -webkit-transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); + transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); + } + 69% { + -webkit-transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); + transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); + } + 70% { + -webkit-transform: translate(14.7%, 96%) rotate(-29.7deg); + transform: translate(14.7%, 96%) rotate(-29.7deg); + } + 71% { + -webkit-transform: translate(15%, 96%) rotate(-30deg); + transform: translate(15%, 96%) rotate(-30deg); + } + 72% { + -webkit-transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); + transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); + } + 73% { + -webkit-transform: translate(13.8%, 111%) rotate(1.2deg); + transform: translate(13.8%, 111%) rotate(1.2deg); + } + 74% { + -webkit-transform: translate(13.5%, 112.5%) rotate(1.5deg); + transform: translate(13.5%, 112.5%) rotate(1.5deg); + } + 76% { + -webkit-transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); + transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); + } + 79% { + -webkit-transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); + } + 81% { + -webkit-transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); + transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); + } + 83% { + -webkit-transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); + transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); + } + 84% { + -webkit-transform: translate(-14.7%, 139.5%) rotate(29.7deg); + transform: translate(-14.7%, 139.5%) rotate(29.7deg); + } + 85% { + -webkit-transform: translate(-15%, 139.5%) rotate(30deg); + transform: translate(-15%, 139.5%) rotate(30deg); + } + 86% { + -webkit-transform: translate(-14.7%, 139.5%) rotate(-0.3deg); + transform: translate(-14.7%, 139.5%) rotate(-0.3deg); + } + 86% { + -webkit-transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); + } + 88% { + -webkit-transform: translate(-13.5%, 156%) rotate(-1.5deg); + transform: translate(-13.5%, 156%) rotate(-1.5deg); + } + 90% { + -webkit-transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); + } + 93% { + -webkit-transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); + } + 95% { + -webkit-transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); + transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); + } + 97% { + -webkit-transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); + transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); + } + 99% { + -webkit-transform: translate(14.7%, 181.5%) rotate(-29.7deg); + transform: translate(14.7%, 181.5%) rotate(-29.7deg); + } + 100% { + -webkit-transform: translate(15%, 181.5%) rotate(-30deg); + transform: translate(15%, 181.5%) rotate(-30deg); + } +} +@-webkit-keyframes ld-leaf { + 0% { + -webkit-transform: translate(-14.7%, -117%) rotate(-0.3deg); + transform: translate(-14.7%, -117%) rotate(-0.3deg); + } + 1% { + -webkit-transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, -112.5%) rotate(-0.6deg); + } + 2% { + -webkit-transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); + transform: translate(-13.8%, -102.00000000000001%) rotate(-1.2deg); + } + 3% { + -webkit-transform: translate(-13.5%, -100.5%) rotate(-1.5deg); + transform: translate(-13.5%, -100.5%) rotate(-1.5deg); + } + 5% { + -webkit-transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, -87%) rotate(-7.800000000000001deg); + } + 7% { + -webkit-transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, -79.5%) rotate(-20.400000000000002deg); + } + 10% { + -webkit-transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); + transform: translate(12.9%, -76.5%) rotate(-27.900000000000002deg); + } + 12% { + -webkit-transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); + transform: translate(14.399999999999999%, -75%) rotate(-29.4deg); + } + 13% { + -webkit-transform: translate(14.7%, -75%) rotate(-29.7deg); + transform: translate(14.7%, -75%) rotate(-29.7deg); + } + 14% { + -webkit-transform: translate(15%, -75%) rotate(-30deg); + transform: translate(15%, -75%) rotate(-30deg); + } + 15% { + -webkit-transform: translate(14.399999999999999%, -69%) rotate(0.6deg); + transform: translate(14.399999999999999%, -69%) rotate(0.6deg); + } + 16% { + -webkit-transform: translate(13.8%, -58.5%) rotate(1.2deg); + transform: translate(13.8%, -58.5%) rotate(1.2deg); + } + 19% { + -webkit-transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); + transform: translate(7.199999999999999%, -45%) rotate(7.800000000000001deg); + } + 21% { + -webkit-transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999%, -37.5%) rotate(20.400000000000002deg); + } + 24% { + -webkit-transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); + transform: translate(-12.9%, -33%) rotate(27.900000000000002deg); + } + 26% { + -webkit-transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); + transform: translate(-14.399999999999999%, -33%) rotate(29.4deg); + } + 27% { + -webkit-transform: translate(-14.7%, -31.5%) rotate(29.7deg); + transform: translate(-14.7%, -31.5%) rotate(29.7deg); + } + 28% { + -webkit-transform: translate(-15%, -31.5%) rotate(30deg); + transform: translate(-15%, -31.5%) rotate(30deg); + } + 29% { + -webkit-transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, -27%) rotate(-0.6deg); + } + 30% { + -webkit-transform: translate(-13.8%, -16.5%) rotate(-1.2deg); + transform: translate(-13.8%, -16.5%) rotate(-1.2deg); + } + 31% { + -webkit-transform: translate(-13.5%, -15%) rotate(-1.5deg); + transform: translate(-13.5%, -15%) rotate(-1.5deg); + } + 33% { + -webkit-transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, -1.5%) rotate(-7.800000000000001deg); + } + 36% { + -webkit-transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, 4.5%) rotate(-20.400000000000002deg); + } + 38% { + -webkit-transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); + transform: translate(12.9%, 9%) rotate(-27.900000000000002deg); + } + 40% { + -webkit-transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); + transform: translate(14.399999999999999%, 10.500000000000002%) rotate(-29.4deg); + } + 41% { + -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); + transform: translate(14.7%, 10.500000000000002%) rotate(-29.7deg); + } + 42% { + -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); + transform: translate(15%, 10.500000000000002%) rotate(-30deg); + } + 43% { + -webkit-transform: translate(15%, 10.500000000000002%) rotate(-30deg); + transform: translate(15%, 10.500000000000002%) rotate(-30deg); + } + 43% { + -webkit-transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); + transform: translate(14.7%, 10.500000000000002%) rotate(0.3deg); + } + 43% { + -webkit-transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); + transform: translate(14.399999999999999%, 16.5%) rotate(0.6deg); + } + 45% { + -webkit-transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); + transform: translate(13.8%, 25.500000000000004%) rotate(1.2deg); + } + 45% { + -webkit-transform: translate(13.5%, 27%) rotate(1.5deg); + transform: translate(13.5%, 27%) rotate(1.5deg); + } + 48% { + -webkit-transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); + transform: translate(7.199999999999999%, 40.5%) rotate(7.800000000000001deg); + } + 50% { + -webkit-transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999%, 48%) rotate(20.400000000000002deg); + } + 52% { + -webkit-transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); + transform: translate(-12.9%, 51.00000000000001%) rotate(27.900000000000002deg); + } + 54% { + -webkit-transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); + transform: translate(-14.399999999999999%, 52.5%) rotate(29.4deg); + } + 56% { + -webkit-transform: translate(-14.7%, 54%) rotate(29.7deg); + transform: translate(-14.7%, 54%) rotate(29.7deg); + } + 57% { + -webkit-transform: translate(-14.7%, 54%) rotate(-0.3deg); + transform: translate(-14.7%, 54%) rotate(-0.3deg); + } + 58% { + -webkit-transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, 58.5%) rotate(-0.6deg); + } + 59% { + -webkit-transform: translate(-13.5%, 70.5%) rotate(-1.5deg); + transform: translate(-13.5%, 70.5%) rotate(-1.5deg); + } + 62% { + -webkit-transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, 84.00000000000001%) rotate(-7.800000000000001deg); + } + 64% { + -webkit-transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, 91.5%) rotate(-20.400000000000002deg); + } + 67% { + -webkit-transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); + transform: translate(12.9%, 94.5%) rotate(-27.900000000000002deg); + } + 69% { + -webkit-transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); + transform: translate(14.399999999999999%, 96%) rotate(-29.4deg); + } + 70% { + -webkit-transform: translate(14.7%, 96%) rotate(-29.7deg); + transform: translate(14.7%, 96%) rotate(-29.7deg); + } + 71% { + -webkit-transform: translate(15%, 96%) rotate(-30deg); + transform: translate(15%, 96%) rotate(-30deg); + } + 72% { + -webkit-transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); + transform: translate(14.399999999999999%, 102.00000000000001%) rotate(0.6deg); + } + 73% { + -webkit-transform: translate(13.8%, 111%) rotate(1.2deg); + transform: translate(13.8%, 111%) rotate(1.2deg); + } + 74% { + -webkit-transform: translate(13.5%, 112.5%) rotate(1.5deg); + transform: translate(13.5%, 112.5%) rotate(1.5deg); + } + 76% { + -webkit-transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); + transform: translate(7.199999999999999%, 126%) rotate(7.800000000000001deg); + } + 79% { + -webkit-transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999%, 133.5%) rotate(20.400000000000002deg); + } + 81% { + -webkit-transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); + transform: translate(-12.9%, 138%) rotate(27.900000000000002deg); + } + 83% { + -webkit-transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); + transform: translate(-14.399999999999999%, 139.5%) rotate(29.4deg); + } + 84% { + -webkit-transform: translate(-14.7%, 139.5%) rotate(29.7deg); + transform: translate(-14.7%, 139.5%) rotate(29.7deg); + } + 85% { + -webkit-transform: translate(-15%, 139.5%) rotate(30deg); + transform: translate(-15%, 139.5%) rotate(30deg); + } + 86% { + -webkit-transform: translate(-14.7%, 139.5%) rotate(-0.3deg); + transform: translate(-14.7%, 139.5%) rotate(-0.3deg); + } + 86% { + -webkit-transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); + transform: translate(-14.399999999999999%, 144%) rotate(-0.6deg); + } + 88% { + -webkit-transform: translate(-13.5%, 156%) rotate(-1.5deg); + transform: translate(-13.5%, 156%) rotate(-1.5deg); + } + 90% { + -webkit-transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999%, 169.49999999999997%) rotate(-7.800000000000001deg); + } + 93% { + -webkit-transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999%, 177%) rotate(-20.400000000000002deg); + } + 95% { + -webkit-transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); + transform: translate(12.9%, 180%) rotate(-27.900000000000002deg); + } + 97% { + -webkit-transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); + transform: translate(14.399999999999999%, 181.5%) rotate(-29.4deg); + } + 99% { + -webkit-transform: translate(14.7%, 181.5%) rotate(-29.7deg); + transform: translate(14.7%, 181.5%) rotate(-29.7deg); + } + 100% { + -webkit-transform: translate(15%, 181.5%) rotate(-30deg); + transform: translate(15%, 181.5%) rotate(-30deg); + } +} +.ld.ld-leaf { + -webkit-animation: ld-leaf 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); + animation: ld-leaf 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); +} +@keyframes ld-slot { + 0% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 9.09% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 9.1% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 16.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 17% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 23.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 23.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 29.59% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 29.6% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 34.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 34.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 38.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 38.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 41.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 41.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 44.39% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 44.4% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 46.29% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 46.3% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 47.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 47.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 48.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 48.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.39% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 49.4% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 49.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 50.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 50.59% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50.6% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 51.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 51.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 52.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 52.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 53.690000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 53.7% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 55.59% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 55.6% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 58.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 58.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 61.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 61.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 65.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 65.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 70.39% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 70.4% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 76.19% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 76.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 82.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 83% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 90.89% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 90.9% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 99.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 100% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } +} +@-webkit-keyframes ld-slot { + 0% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 9.09% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 9.1% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 16.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 17% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 23.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 23.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 29.59% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 29.6% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 34.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 34.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 38.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 38.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 41.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 41.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 44.39% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 44.4% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 46.29% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 46.3% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 47.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 47.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 48.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 48.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.39% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 49.4% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.79% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 49.8% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 49.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 50.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 50.59% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 50.6% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 51.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 51.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 52.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 52.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 53.690000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 53.7% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 55.59% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 55.6% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 58.190000000000005% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 58.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 61.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 61.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 65.49% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 65.5% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 70.39% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 70.4% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 76.19% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 76.2% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 82.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 83% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 90.89% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 90.9% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } + 99.99% { + -webkit-transform: translate(0, 160%); + transform: translate(0, 160%); + } + 100% { + -webkit-transform: translate(0, -160%); + transform: translate(0, -160%); + } +} +.ld.ld-slot { + -webkit-animation: ld-slot 6s infinite linear; + animation: ld-slot 6s infinite linear; +} +@keyframes ld-bounce-px { + 0%, 90% { + animation-timing-function: linear; + } + 10% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 50% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0, 30px) scaleY(0.5); + transform: translate(0, 30px) scaleY(0.5); + } + 10% { + -webkit-transform: translate(0, 5px) scaleY(1.1); + transform: translate(0, 5px) scaleY(1.1); + } + 50% { + -webkit-transform: translate(0, -37px) scaleY(1.1); + transform: translate(0, -37px) scaleY(1.1); + } + 90% { + -webkit-transform: translate(0, 5px) scaleY(1.1); + transform: translate(0, 5px) scaleY(1.1); + } + 100% { + -webkit-transform: translate(0, 30px) scaleY(0.5); + transform: translate(0, 30px) scaleY(0.5); + } +} +@-webkit-keyframes ld-bounce-px { + 0%, 90% { + animation-timing-function: linear; + } + 10% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 50% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0, 30px) scaleY(0.5); + transform: translate(0, 30px) scaleY(0.5); + } + 10% { + -webkit-transform: translate(0, 5px) scaleY(1.1); + transform: translate(0, 5px) scaleY(1.1); + } + 50% { + -webkit-transform: translate(0, -37px) scaleY(1.1); + transform: translate(0, -37px) scaleY(1.1); + } + 90% { + -webkit-transform: translate(0, 5px) scaleY(1.1); + transform: translate(0, 5px) scaleY(1.1); + } + 100% { + -webkit-transform: translate(0, 30px) scaleY(0.5); + transform: translate(0, 30px) scaleY(0.5); + } +} +.ld.ld-bounce-px { + -webkit-animation: ld-bounce-px 1s infinite; + animation: ld-bounce-px 1s infinite; +} +@keyframes ld-bounce-px-rtl { + 0% { + -webkit-transform: translate(80px, -20px); + transform: translate(80px, -20px); + } + 12.5% { + -webkit-transform: translate(60px, -12px); + transform: translate(60px, -12px); + } + 25% { + -webkit-transform: translate(40px, 0); + transform: translate(40px, 0); + } + 37.5% { + -webkit-transform: translate(25px, -12px); + transform: translate(25px, -12px); + } + 50% { + -webkit-transform: translate(0, -20px); + transform: translate(0, -20px); + } + 62.5% { + -webkit-transform: translate(-25px, -12px); + transform: translate(-25px, -12px); + } + 75% { + -webkit-transform: translate(-40px, 0); + transform: translate(-40px, 0); + } + 87.5% { + -webkit-transform: translate(-60px, -12px); + transform: translate(-60px, -12px); + } + 100% { + -webkit-transform: translate(-80px, -20px); + transform: translate(-80px, -20px); + } +} +@-webkit-keyframes ld-bounce-px-rtl { + 0% { + -webkit-transform: translate(80px, -20px); + transform: translate(80px, -20px); + } + 12.5% { + -webkit-transform: translate(60px, -12px); + transform: translate(60px, -12px); + } + 25% { + -webkit-transform: translate(40px, 0); + transform: translate(40px, 0); + } + 37.5% { + -webkit-transform: translate(25px, -12px); + transform: translate(25px, -12px); + } + 50% { + -webkit-transform: translate(0, -20px); + transform: translate(0, -20px); + } + 62.5% { + -webkit-transform: translate(-25px, -12px); + transform: translate(-25px, -12px); + } + 75% { + -webkit-transform: translate(-40px, 0); + transform: translate(-40px, 0); + } + 87.5% { + -webkit-transform: translate(-60px, -12px); + transform: translate(-60px, -12px); + } + 100% { + -webkit-transform: translate(-80px, -20px); + transform: translate(-80px, -20px); + } +} +.ld.ld-bounce-px-rtl { + -webkit-animation: ld-bounce-px-rtl 1s infinite linear; + animation: ld-bounce-px-rtl 1s infinite linear; +} +@keyframes ld-bounce-px-ltr { + 0% { + -webkit-transform: translate(-80px, -20px); + transform: translate(-80px, -20px); + } + 12.5% { + -webkit-transform: translate(-60px, -12px); + transform: translate(-60px, -12px); + } + 25% { + -webkit-transform: translate(-50px, 0); + transform: translate(-50px, 0); + } + 37.5% { + -webkit-transform: translate(-25px, -12px); + transform: translate(-25px, -12px); + } + 50% { + -webkit-transform: translate(0, -20px); + transform: translate(0, -20px); + } + 62.5% { + -webkit-transform: translate(25px, -12px); + transform: translate(25px, -12px); + } + 75% { + -webkit-transform: translate(50px, 0); + transform: translate(50px, 0); + } + 87.5% { + -webkit-transform: translate(60px, -12px); + transform: translate(60px, -12px); + } + 100% { + -webkit-transform: translate(80px, -20px); + transform: translate(80px, -20px); + } +} +@-webkit-keyframes ld-bounce-px-ltr { + 0% { + -webkit-transform: translate(-80px, -20px); + transform: translate(-80px, -20px); + } + 12.5% { + -webkit-transform: translate(-60px, -12px); + transform: translate(-60px, -12px); + } + 25% { + -webkit-transform: translate(-50px, 0); + transform: translate(-50px, 0); + } + 37.5% { + -webkit-transform: translate(-25px, -12px); + transform: translate(-25px, -12px); + } + 50% { + -webkit-transform: translate(0, -20px); + transform: translate(0, -20px); + } + 62.5% { + -webkit-transform: translate(25px, -12px); + transform: translate(25px, -12px); + } + 75% { + -webkit-transform: translate(50px, 0); + transform: translate(50px, 0); + } + 87.5% { + -webkit-transform: translate(60px, -12px); + transform: translate(60px, -12px); + } + 100% { + -webkit-transform: translate(80px, -20px); + transform: translate(80px, -20px); + } +} +.ld.ld-bounce-px-ltr { + -webkit-animation: ld-bounce-px-ltr 1s infinite linear; + animation: ld-bounce-px-ltr 1s infinite linear; +} +@keyframes ld-bounce-a-px { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 12.5%, 37.5%, 62.5%, 87.5% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 12.5% { + -webkit-transform: translate(5px, -28px); + transform: translate(5px, -28px); + } + 25% { + -webkit-transform: translate(10px, 0); + transform: translate(10px, 0); + } + 37.5% { + -webkit-transform: translate(5px, -28px); + transform: translate(5px, -28px); + } + 50% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 62.5% { + -webkit-transform: translate(-5px, -28px); + transform: translate(-5px, -28px); + } + 75% { + -webkit-transform: translate(-10px, 0); + transform: translate(-10px, 0); + } + 87.5% { + -webkit-transform: translate(-5px, -28px); + transform: translate(-5px, -28px); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-bounce-a-px { + 0%, 25%, 50%, 75%, 100% { + animation-timing-function: cubic-bezier(0, 0.4, 0.6, 1); + } + 12.5%, 37.5%, 62.5%, 87.5% { + animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 12.5% { + -webkit-transform: translate(5px, -28px); + transform: translate(5px, -28px); + } + 25% { + -webkit-transform: translate(10px, 0); + transform: translate(10px, 0); + } + 37.5% { + -webkit-transform: translate(5px, -28px); + transform: translate(5px, -28px); + } + 50% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 62.5% { + -webkit-transform: translate(-5px, -28px); + transform: translate(-5px, -28px); + } + 75% { + -webkit-transform: translate(-10px, 0); + transform: translate(-10px, 0); + } + 87.5% { + -webkit-transform: translate(-5px, -28px); + transform: translate(-5px, -28px); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-bounce-a-px { + -webkit-animation: ld-bounce-a-px 2s infinite; + animation: ld-bounce-a-px 2s infinite; +} +@keyframes ld-float-px { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: linear; + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } + 30% { + -webkit-transform: translate(0, -10px); + transform: translate(0, -10px); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 50% { + -webkit-transform: translate(0, -10px); + transform: translate(0, -10px); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } +} +@-webkit-keyframes ld-float-px { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: linear; + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } + 30% { + -webkit-transform: translate(0, -10px); + transform: translate(0, -10px); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 50% { + -webkit-transform: translate(0, -10px); + transform: translate(0, -10px); + box-shadow: 0 5px 5px rgba(0,0,0,0.3); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + box-shadow: 0 0 0 rgba(0,0,0,0.3); + } +} +.ld.ld-float-px { + -webkit-animation: ld-float-px 1s infinite; + animation: ld-float-px 1s infinite; +} +@keyframes ld-hit-px { + 0% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + -webkit-transform: scale(0) translate(0, 0) skewX(0); + transform: scale(0) translate(0, 0) skewX(0); + } + 20% { + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 50% { + animation-timing-function: cubic-bezier(1, 0, 1, 0.5); + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 100% { + -webkit-transform: scale(1) translate(0, 150px) skewX(20deg); + transform: scale(1) translate(0, 150px) skewX(20deg); + } +} +@-webkit-keyframes ld-hit-px { + 0% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + -webkit-transform: scale(0) translate(0, 0) skewX(0); + transform: scale(0) translate(0, 0) skewX(0); + } + 20% { + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 50% { + animation-timing-function: cubic-bezier(1, 0, 1, 0.5); + -webkit-transform: scale(1) translate(0, 0) skewX(20deg); + transform: scale(1) translate(0, 0) skewX(20deg); + } + 100% { + -webkit-transform: scale(1) translate(0, 150px) skewX(20deg); + transform: scale(1) translate(0, 150px) skewX(20deg); + } +} +.ld.ld-hit-px { + -webkit-animation: ld-hit-px 2s infinite; + animation: ld-hit-px 2s infinite; +} +@keyframes ld-jelly-px { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 16.6% { + -webkit-transform: translate(-30px, 0) skewX(30deg); + transform: translate(-30px, 0) skewX(30deg); + } + 33.3% { + -webkit-transform: translate(25px, 0) skewX(-20deg); + transform: translate(25px, 0) skewX(-20deg); + } + 50% { + -webkit-transform: translate(-12px, 0) skewX(10deg); + transform: translate(-12px, 0) skewX(10deg); + } + 66.6% { + -webkit-transform: translate(6px, 0) skewX(-5deg); + transform: translate(6px, 0) skewX(-5deg); + } + 83.3% { + -webkit-transform: translate(-2.5px, 0) skewX(2deg); + transform: translate(-2.5px, 0) skewX(2deg); + } + 100% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } +} +@-webkit-keyframes ld-jelly-px { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 16.6% { + -webkit-transform: translate(-30px, 0) skewX(30deg); + transform: translate(-30px, 0) skewX(30deg); + } + 33.3% { + -webkit-transform: translate(25px, 0) skewX(-20deg); + transform: translate(25px, 0) skewX(-20deg); + } + 50% { + -webkit-transform: translate(-12px, 0) skewX(10deg); + transform: translate(-12px, 0) skewX(10deg); + } + 66.6% { + -webkit-transform: translate(6px, 0) skewX(-5deg); + transform: translate(6px, 0) skewX(-5deg); + } + 83.3% { + -webkit-transform: translate(-2.5px, 0) skewX(2deg); + transform: translate(-2.5px, 0) skewX(2deg); + } + 100% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } +} +.ld.ld-jelly-px { + -webkit-animation: ld-jelly-px 1s infinite linear; + animation: ld-jelly-px 1s infinite linear; +} +@keyframes ld-jump-px { + 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { + animation-timing-function: ease-out; + } + 14%, 38%, 56%, 70%, 81%, 90%, 97% { + animation-timing-function: ease-in; + } + 0% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 14% { + -webkit-transform: translateY(-27px); + transform: translateY(-27px); + } + 28% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 38% { + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + } + 48% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 56% { + -webkit-transform: translateY(-16px); + transform: translateY(-16px); + } + 64% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 70% { + -webkit-transform: translateY(-12px); + transform: translateY(-12px); + } + 76% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 81% { + -webkit-transform: translateY(-7.5px); + transform: translateY(-7.5px); + } + 86% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 90% { + -webkit-transform: translateY(-3px); + transform: translateY(-3px); + } + 93% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 97% { + -webkit-transform: translateY(-1.5px); + transform: translateY(-1.5px); + } + 100% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } +} +@-webkit-keyframes ld-jump-px { + 0%, 28%, 48%, 64%, 76%, 86%, 93%, 100% { + animation-timing-function: ease-out; + } + 14%, 38%, 56%, 70%, 81%, 90%, 97% { + animation-timing-function: ease-in; + } + 0% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 14% { + -webkit-transform: translateY(-27px); + transform: translateY(-27px); + } + 28% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 38% { + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + } + 48% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 56% { + -webkit-transform: translateY(-16px); + transform: translateY(-16px); + } + 64% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 70% { + -webkit-transform: translateY(-12px); + transform: translateY(-12px); + } + 76% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 81% { + -webkit-transform: translateY(-7.5px); + transform: translateY(-7.5px); + } + 86% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 90% { + -webkit-transform: translateY(-3px); + transform: translateY(-3px); + } + 93% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 97% { + -webkit-transform: translateY(-1.5px); + transform: translateY(-1.5px); + } + 100% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } +} +.ld.ld-jump-px { + -webkit-animation: ld-jump-px 1.5s ease-in infinite; + animation: ld-jump-px 1.5s ease-in infinite; +} +@keyframes ld-orbit-px { + 0% { + -webkit-transform: translate(30px, 0) rotate(0deg); + transform: translate(30px, 0) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(21px, 21px) rotate(45deg); + transform: translate(21px, 21px) rotate(45deg); + } + 25% { + -webkit-transform: translate(0, 30px) rotate(90deg); + transform: translate(0, 30px) rotate(90deg); + } + 37.5% { + -webkit-transform: translate(-21px, 21px) rotate(135deg); + transform: translate(-21px, 21px) rotate(135deg); + } + 50% { + -webkit-transform: translate(-30px, 0) rotate(180deg); + transform: translate(-30px, 0) rotate(180deg); + } + 62.5% { + -webkit-transform: translate(-21px, -21px) rotate(225deg); + transform: translate(-21px, -21px) rotate(225deg); + } + 75% { + -webkit-transform: translate(0, -30px) rotate(270deg); + transform: translate(0, -30px) rotate(270deg); + } + 87.5% { + -webkit-transform: translate(21px, -21px) rotate(315deg); + transform: translate(21px, -21px) rotate(315deg); + } + 100% { + -webkit-transform: translate(30px, 0) rotate(360deg); + transform: translate(30px, 0) rotate(360deg); + } +} +@-webkit-keyframes ld-orbit-px { + 0% { + -webkit-transform: translate(30px, 0) rotate(0deg); + transform: translate(30px, 0) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(21px, 21px) rotate(45deg); + transform: translate(21px, 21px) rotate(45deg); + } + 25% { + -webkit-transform: translate(0, 30px) rotate(90deg); + transform: translate(0, 30px) rotate(90deg); + } + 37.5% { + -webkit-transform: translate(-21px, 21px) rotate(135deg); + transform: translate(-21px, 21px) rotate(135deg); + } + 50% { + -webkit-transform: translate(-30px, 0) rotate(180deg); + transform: translate(-30px, 0) rotate(180deg); + } + 62.5% { + -webkit-transform: translate(-21px, -21px) rotate(225deg); + transform: translate(-21px, -21px) rotate(225deg); + } + 75% { + -webkit-transform: translate(0, -30px) rotate(270deg); + transform: translate(0, -30px) rotate(270deg); + } + 87.5% { + -webkit-transform: translate(21px, -21px) rotate(315deg); + transform: translate(21px, -21px) rotate(315deg); + } + 100% { + -webkit-transform: translate(30px, 0) rotate(360deg); + transform: translate(30px, 0) rotate(360deg); + } +} +.ld.ld-orbit-px { + -webkit-animation: ld-orbit-px 1s infinite linear; + animation: ld-orbit-px 1s infinite linear; +} +@keyframes ld-rush-px-rtl { + 0% { + -webkit-transform: translate(100px, 0) skewX(-45deg); + transform: translate(100px, 0) skewX(-45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(-20px, 0) skewX(35deg); + transform: translate(-20px, 0) skewX(35deg); + } + 45% { + -webkit-transform: translate(10px, 0) skewX(-15deg); + transform: translate(10px, 0) skewX(-15deg); + } + 60% { + -webkit-transform: translate(-5px, 0) skewX(7deg); + transform: translate(-5px, 0) skewX(7deg); + } + 80% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(-150px, 0) skewX(-45deg); + transform: translate(-150px, 0) skewX(-45deg); + } +} +@-webkit-keyframes ld-rush-px-rtl { + 0% { + -webkit-transform: translate(100px, 0) skewX(-45deg); + transform: translate(100px, 0) skewX(-45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(-20px, 0) skewX(35deg); + transform: translate(-20px, 0) skewX(35deg); + } + 45% { + -webkit-transform: translate(10px, 0) skewX(-15deg); + transform: translate(10px, 0) skewX(-15deg); + } + 60% { + -webkit-transform: translate(-5px, 0) skewX(7deg); + transform: translate(-5px, 0) skewX(7deg); + } + 80% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(-150px, 0) skewX(-45deg); + transform: translate(-150px, 0) skewX(-45deg); + } +} +.ld.ld-rush-px-rtl { + -webkit-animation: ld-rush-px-rtl 1.5s infinite linear; + animation: ld-rush-px-rtl 1.5s infinite linear; +} +@keyframes ld-rush-px-ltr { + 0% { + -webkit-transform: translate(-100px, 0) skewX(45deg); + transform: translate(-100px, 0) skewX(45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(20px, 0) skewX(-35deg); + transform: translate(20px, 0) skewX(-35deg); + } + 45% { + -webkit-transform: translate(-10px, 0) skewX(15deg); + transform: translate(-10px, 0) skewX(15deg); + } + 60% { + -webkit-transform: translate(5px, 0) skewX(-7deg); + transform: translate(5px, 0) skewX(-7deg); + } + 80% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(150px, 0) skewX(45deg); + transform: translate(150px, 0) skewX(45deg); + } +} +@-webkit-keyframes ld-rush-px-ltr { + 0% { + -webkit-transform: translate(-100px, 0) skewX(45deg); + transform: translate(-100px, 0) skewX(45deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 30% { + -webkit-transform: translate(20px, 0) skewX(-35deg); + transform: translate(20px, 0) skewX(-35deg); + } + 45% { + -webkit-transform: translate(-10px, 0) skewX(15deg); + transform: translate(-10px, 0) skewX(15deg); + } + 60% { + -webkit-transform: translate(5px, 0) skewX(-7deg); + transform: translate(5px, 0) skewX(-7deg); + } + 80% { + -webkit-transform: translate(0, 0) skewX(0deg); + transform: translate(0, 0) skewX(0deg); + } + 100% { + -webkit-transform: translate(150px, 0) skewX(45deg); + transform: translate(150px, 0) skewX(45deg); + } +} +.ld.ld-rush-px-ltr { + -webkit-animation: ld-rush-px-ltr 1.5s infinite linear; + animation: ld-rush-px-ltr 1.5s infinite linear; +} +@keyframes ld-shake-px { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 16.6% { + -webkit-transform: translate(-35px, 0); + transform: translate(-35px, 0); + } + 33.3% { + -webkit-transform: translate(25px, 0); + transform: translate(25px, 0); + } + 50% { + -webkit-transform: translate(-12px, 0); + transform: translate(-12px, 0); + } + 66.6% { + -webkit-transform: translate(6px, 0); + transform: translate(6px, 0); + } + 83.3% { + -webkit-transform: translate(-2.5px, 0); + transform: translate(-2.5px, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-shake-px { + 0%, 16.6%, 33.3%, 50%, 66.6%, 83.3% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 16.6% { + -webkit-transform: translate(-35px, 0); + transform: translate(-35px, 0); + } + 33.3% { + -webkit-transform: translate(25px, 0); + transform: translate(25px, 0); + } + 50% { + -webkit-transform: translate(-12px, 0); + transform: translate(-12px, 0); + } + 66.6% { + -webkit-transform: translate(6px, 0); + transform: translate(6px, 0); + } + 83.3% { + -webkit-transform: translate(-2.5px, 0); + transform: translate(-2.5px, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-shake-px { + -webkit-animation: ld-shake-px 1s infinite linear; + animation: ld-shake-px 1s infinite linear; +} +@keyframes ld-slide-px-ltr { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(100px, 0); + transform: translate(100px, 0); + } + 50% { + -webkit-transform: translate(-100px, 0); + transform: translate(-100px, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-px-ltr { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(100px, 0); + transform: translate(100px, 0); + } + 50% { + -webkit-transform: translate(-100px, 0); + transform: translate(-100px, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-px-ltr { + -webkit-animation: ld-slide-px-ltr 1s infinite; + animation: ld-slide-px-ltr 1s infinite; +} +@keyframes ld-slide-px-rtl { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(-100px, 0); + transform: translate(-100px, 0); + } + 50% { + -webkit-transform: translate(100px, 0); + transform: translate(100px, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-px-rtl { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(-100px, 0); + transform: translate(-100px, 0); + } + 50% { + -webkit-transform: translate(100px, 0); + transform: translate(100px, 0); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-px-rtl { + -webkit-animation: ld-slide-px-rtl 1s infinite; + animation: ld-slide-px-rtl 1s infinite; +} +@keyframes ld-slide-px-btt { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 50% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-px-btt { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 50% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-px-btt { + -webkit-animation: ld-slide-px-btt 1s infinite; + animation: ld-slide-px-btt 1s infinite; +} +@keyframes ld-slide-px-ttb { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +@-webkit-keyframes ld-slide-px-ttb { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 50% { + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 49.9% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } +} +.ld.ld-slide-px-ttb { + -webkit-animation: ld-slide-px-ttb 1s infinite; + animation: ld-slide-px-ttb 1s infinite; +} +@keyframes ld-tremble-px { + 0% { + -webkit-transform: translate(1px, 1px); + transform: translate(1px, 1px); + } + 5% { + -webkit-transform: translate(0, 1px); + transform: translate(0, 1px); + } + 10% { + -webkit-transform: translate(1px, 2px); + transform: translate(1px, 2px); + } + 15% { + -webkit-transform: translate(2px, 1px); + transform: translate(2px, 1px); + } + 20% { + -webkit-transform: translate(3px, 0); + transform: translate(3px, 0); + } + 25% { + -webkit-transform: translate(1px, 2px); + transform: translate(1px, 2px); + } + 30% { + -webkit-transform: translate(1px, 3px); + transform: translate(1px, 3px); + } + 35% { + -webkit-transform: translate(0, 1px); + transform: translate(0, 1px); + } + 40% { + -webkit-transform: translate(1px, 1px); + transform: translate(1px, 1px); + } + 45% { + -webkit-transform: translate(1px, 0); + transform: translate(1px, 0); + } + 50% { + -webkit-transform: translate(2px, 1px); + transform: translate(2px, 1px); + } + 55% { + -webkit-transform: translate(1px, 2px); + transform: translate(1px, 2px); + } + 60% { + -webkit-transform: translate(3px, 1px); + transform: translate(3px, 1px); + } + 65% { + -webkit-transform: translate(0, 2px); + transform: translate(0, 2px); + } + 70% { + -webkit-transform: translate(3px, 0); + transform: translate(3px, 0); + } + 75% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 80% { + -webkit-transform: translate(2px, 3px); + transform: translate(2px, 3px); + } + 85% { + -webkit-transform: translate(1px, 0); + transform: translate(1px, 0); + } + 90% { + -webkit-transform: translate(0, 2px); + transform: translate(0, 2px); + } + 95% { + -webkit-transform: translate(3px, 2px); + transform: translate(3px, 2px); + } +} +@-webkit-keyframes ld-tremble-px { + 0% { + -webkit-transform: translate(1px, 1px); + transform: translate(1px, 1px); + } + 5% { + -webkit-transform: translate(0, 1px); + transform: translate(0, 1px); + } + 10% { + -webkit-transform: translate(1px, 2px); + transform: translate(1px, 2px); + } + 15% { + -webkit-transform: translate(2px, 1px); + transform: translate(2px, 1px); + } + 20% { + -webkit-transform: translate(3px, 0); + transform: translate(3px, 0); + } + 25% { + -webkit-transform: translate(1px, 2px); + transform: translate(1px, 2px); + } + 30% { + -webkit-transform: translate(1px, 3px); + transform: translate(1px, 3px); + } + 35% { + -webkit-transform: translate(0, 1px); + transform: translate(0, 1px); + } + 40% { + -webkit-transform: translate(1px, 1px); + transform: translate(1px, 1px); + } + 45% { + -webkit-transform: translate(1px, 0); + transform: translate(1px, 0); + } + 50% { + -webkit-transform: translate(2px, 1px); + transform: translate(2px, 1px); + } + 55% { + -webkit-transform: translate(1px, 2px); + transform: translate(1px, 2px); + } + 60% { + -webkit-transform: translate(3px, 1px); + transform: translate(3px, 1px); + } + 65% { + -webkit-transform: translate(0, 2px); + transform: translate(0, 2px); + } + 70% { + -webkit-transform: translate(3px, 0); + transform: translate(3px, 0); + } + 75% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + } + 80% { + -webkit-transform: translate(2px, 3px); + transform: translate(2px, 3px); + } + 85% { + -webkit-transform: translate(1px, 0); + transform: translate(1px, 0); + } + 90% { + -webkit-transform: translate(0, 2px); + transform: translate(0, 2px); + } + 95% { + -webkit-transform: translate(3px, 2px); + transform: translate(3px, 2px); + } +} +.ld.ld-tremble-px { + -webkit-animation: ld-tremble-px 1s infinite; + animation: ld-tremble-px 1s infinite; +} +@keyframes ld-wander-px-h { + 0% { + -webkit-transform: translate(-35px, 0); + transform: translate(-35px, 0); + } + 50% { + -webkit-transform: translate(35px, 0); + transform: translate(35px, 0); + } + 100% { + -webkit-transform: translate(-35px, 0); + transform: translate(-35px, 0); + } +} +@-webkit-keyframes ld-wander-px-h { + 0% { + -webkit-transform: translate(-35px, 0); + transform: translate(-35px, 0); + } + 50% { + -webkit-transform: translate(35px, 0); + transform: translate(35px, 0); + } + 100% { + -webkit-transform: translate(-35px, 0); + transform: translate(-35px, 0); + } +} +.ld.ld-wander-px-h { + -webkit-animation: ld-wander-px-h 1s infinite ease-out; + animation: ld-wander-px-h 1s infinite ease-out; +} +@keyframes ld-wander-px-v { + 0% { + -webkit-transform: translate(0, -35px); + transform: translate(0, -35px); + } + 50% { + -webkit-transform: translate(0, 35px); + transform: translate(0, 35px); + } + 100% { + -webkit-transform: translate(0, -35px); + transform: translate(0, -35px); + } +} +@-webkit-keyframes ld-wander-px-v { + 0% { + -webkit-transform: translate(0, -35px); + transform: translate(0, -35px); + } + 50% { + -webkit-transform: translate(0, 35px); + transform: translate(0, 35px); + } + 100% { + -webkit-transform: translate(0, -35px); + transform: translate(0, -35px); + } +} +.ld.ld-wander-px-v { + -webkit-animation: ld-wander-px-v 1s infinite ease-out; + animation: ld-wander-px-v 1s infinite ease-out; +} +@keyframes ld-jingle-px { + 0% { + -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + } + 4% { + -webkit-transform: translate(0, -40px) rotate(11deg) translate(0, 40px); + transform: translate(0, -40px) rotate(11deg) translate(0, 40px); + } + 10% { + -webkit-transform: translate(0, -40px) rotate(15deg) translate(0, 40px); + transform: translate(0, -40px) rotate(15deg) translate(0, 40px); + } + 18% { + -webkit-transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); + } + 20% { + -webkit-transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); + } + 21% { + -webkit-transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); + } + 22% { + -webkit-transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); + } + 24% { + -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + } + 26% { + -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + } + 28% { + -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + } + 30% { + -webkit-transform: translate(0, -40px) rotate(10deg) translate(0, 40px); + transform: translate(0, -40px) rotate(10deg) translate(0, 40px); + } + 31% { + -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + } + 33% { + -webkit-transform: translate(0, -40px) rotate(5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(5deg) translate(0, 40px); + } + 34% { + -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + } + 36% { + -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + } + 39% { + -webkit-transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); + } + 40% { + -webkit-transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); + } + 44% { + -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + } + 47% { + -webkit-transform: translate(0, -40px) rotate(7deg) translate(0, 40px); + transform: translate(0, -40px) rotate(7deg) translate(0, 40px); + } + 56% { + -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + } + 63% { + -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + } + 75% { + -webkit-transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); + } + 100% { + -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + } +} +@-webkit-keyframes ld-jingle-px { + 0% { + -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + } + 4% { + -webkit-transform: translate(0, -40px) rotate(11deg) translate(0, 40px); + transform: translate(0, -40px) rotate(11deg) translate(0, 40px); + } + 10% { + -webkit-transform: translate(0, -40px) rotate(15deg) translate(0, 40px); + transform: translate(0, -40px) rotate(15deg) translate(0, 40px); + } + 18% { + -webkit-transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-11deg) translate(0, 40px); + } + 20% { + -webkit-transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-13deg) translate(0, 40px); + } + 21% { + -webkit-transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-12deg) translate(0, 40px); + } + 22% { + -webkit-transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-10deg) translate(0, 40px); + } + 24% { + -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + } + 26% { + -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + } + 28% { + -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + } + 30% { + -webkit-transform: translate(0, -40px) rotate(10deg) translate(0, 40px); + transform: translate(0, -40px) rotate(10deg) translate(0, 40px); + } + 31% { + -webkit-transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + transform: translate(0, -40px) rotate(9deg) translate(0, 40px); + } + 33% { + -webkit-transform: translate(0, -40px) rotate(5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(5deg) translate(0, 40px); + } + 34% { + -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + } + 36% { + -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + } + 39% { + -webkit-transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-8deg) translate(0, 40px); + } + 40% { + -webkit-transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-7deg) translate(0, 40px); + } + 44% { + -webkit-transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + transform: translate(0, -40px) rotate(3deg) translate(0, 40px); + } + 47% { + -webkit-transform: translate(0, -40px) rotate(7deg) translate(0, 40px); + transform: translate(0, -40px) rotate(7deg) translate(0, 40px); + } + 56% { + -webkit-transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-5deg) translate(0, 40px); + } + 63% { + -webkit-transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + transform: translate(0, -40px) rotate(1deg) translate(0, 40px); + } + 75% { + -webkit-transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); + transform: translate(0, -40px) rotate(-1deg) translate(0, 40px); + } + 100% { + -webkit-transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + transform: translate(0, -40px) rotate(0deg) translate(0, 40px); + } +} +.ld.ld-jingle-px { + -webkit-animation: ld-jingle-px 1s infinite; + animation: ld-jingle-px 1s infinite; +} +@keyframes ld-swim-px { + 0% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(1px, -2px) rotate(3deg); + transform: translate(1px, -2px) rotate(3deg); + } + 25% { + -webkit-transform: translate(0, -3px) rotate(6deg); + transform: translate(0, -3px) rotate(6deg); + } + 37.5% { + -webkit-transform: translate(-1px, -2px) rotate(3deg); + transform: translate(-1px, -2px) rotate(3deg); + } + 50% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 62.5% { + -webkit-transform: translate(1px, 2px) rotate(-3deg); + transform: translate(1px, 2px) rotate(-3deg); + } + 75% { + -webkit-transform: translate(0, 3px) rotate(-6deg); + transform: translate(0, 3px) rotate(-6deg); + } + 87.5% { + -webkit-transform: translate(-1px, 2px) rotate(-3deg); + transform: translate(-1px, 2px) rotate(-3deg); + } + 100% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } +} +@-webkit-keyframes ld-swim-px { + 0% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 12.5% { + -webkit-transform: translate(1px, -2px) rotate(3deg); + transform: translate(1px, -2px) rotate(3deg); + } + 25% { + -webkit-transform: translate(0, -3px) rotate(6deg); + transform: translate(0, -3px) rotate(6deg); + } + 37.5% { + -webkit-transform: translate(-1px, -2px) rotate(3deg); + transform: translate(-1px, -2px) rotate(3deg); + } + 50% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } + 62.5% { + -webkit-transform: translate(1px, 2px) rotate(-3deg); + transform: translate(1px, 2px) rotate(-3deg); + } + 75% { + -webkit-transform: translate(0, 3px) rotate(-6deg); + transform: translate(0, 3px) rotate(-6deg); + } + 87.5% { + -webkit-transform: translate(-1px, 2px) rotate(-3deg); + transform: translate(-1px, 2px) rotate(-3deg); + } + 100% { + -webkit-transform: translate(0, 0) rotate(0deg); + transform: translate(0, 0) rotate(0deg); + } +} +.ld.ld-swim-px { + -webkit-animation: ld-swim-px 3s infinite linear; + animation: ld-swim-px 3s infinite linear; +} +@keyframes ld-leaf-px { + 0% { + -webkit-transform: translate(-14.7px, -117px) rotate(-0.3deg); + transform: translate(-14.7px, -117px) rotate(-0.3deg); + } + 1% { + -webkit-transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); + } + 2% { + -webkit-transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); + transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); + } + 3% { + -webkit-transform: translate(-13.5px, -100.5px) rotate(-1.5deg); + transform: translate(-13.5px, -100.5px) rotate(-1.5deg); + } + 5% { + -webkit-transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); + } + 7% { + -webkit-transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); + } + 10% { + -webkit-transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); + transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); + } + 12% { + -webkit-transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); + transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); + } + 13% { + -webkit-transform: translate(14.7px, -75px) rotate(-29.7deg); + transform: translate(14.7px, -75px) rotate(-29.7deg); + } + 14% { + -webkit-transform: translate(15px, -75px) rotate(-30deg); + transform: translate(15px, -75px) rotate(-30deg); + } + 15% { + -webkit-transform: translate(14.399999999999999px, -69px) rotate(0.6deg); + transform: translate(14.399999999999999px, -69px) rotate(0.6deg); + } + 16% { + -webkit-transform: translate(13.8px, -58.5px) rotate(1.2deg); + transform: translate(13.8px, -58.5px) rotate(1.2deg); + } + 19% { + -webkit-transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); + transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); + } + 21% { + -webkit-transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); + } + 24% { + -webkit-transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); + transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); + } + 26% { + -webkit-transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); + transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); + } + 27% { + -webkit-transform: translate(-14.7px, -31.5px) rotate(29.7deg); + transform: translate(-14.7px, -31.5px) rotate(29.7deg); + } + 28% { + -webkit-transform: translate(-15px, -31.5px) rotate(30deg); + transform: translate(-15px, -31.5px) rotate(30deg); + } + 29% { + -webkit-transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); + } + 30% { + -webkit-transform: translate(-13.8px, -16.5px) rotate(-1.2deg); + transform: translate(-13.8px, -16.5px) rotate(-1.2deg); + } + 31% { + -webkit-transform: translate(-13.5px, -15px) rotate(-1.5deg); + transform: translate(-13.5px, -15px) rotate(-1.5deg); + } + 33% { + -webkit-transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); + } + 36% { + -webkit-transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); + } + 38% { + -webkit-transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); + transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); + } + 40% { + -webkit-transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); + transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); + } + 41% { + -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); + transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); + } + 42% { + -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); + transform: translate(15px, 10.500000000000002px) rotate(-30deg); + } + 43% { + -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); + transform: translate(15px, 10.500000000000002px) rotate(-30deg); + } + 43% { + -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); + transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); + } + 43% { + -webkit-transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); + transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); + } + 45% { + -webkit-transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); + transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); + } + 45% { + -webkit-transform: translate(13.5px, 27px) rotate(1.5deg); + transform: translate(13.5px, 27px) rotate(1.5deg); + } + 48% { + -webkit-transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); + transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); + } + 50% { + -webkit-transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); + } + 52% { + -webkit-transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); + transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); + } + 54% { + -webkit-transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); + transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); + } + 56% { + -webkit-transform: translate(-14.7px, 54px) rotate(29.7deg); + transform: translate(-14.7px, 54px) rotate(29.7deg); + } + 57% { + -webkit-transform: translate(-14.7px, 54px) rotate(-0.3deg); + transform: translate(-14.7px, 54px) rotate(-0.3deg); + } + 58% { + -webkit-transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); + } + 59% { + -webkit-transform: translate(-13.5px, 70.5px) rotate(-1.5deg); + transform: translate(-13.5px, 70.5px) rotate(-1.5deg); + } + 62% { + -webkit-transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); + } + 64% { + -webkit-transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); + } + 67% { + -webkit-transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); + transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); + } + 69% { + -webkit-transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); + transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); + } + 70% { + -webkit-transform: translate(14.7px, 96px) rotate(-29.7deg); + transform: translate(14.7px, 96px) rotate(-29.7deg); + } + 71% { + -webkit-transform: translate(15px, 96px) rotate(-30deg); + transform: translate(15px, 96px) rotate(-30deg); + } + 72% { + -webkit-transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); + transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); + } + 73% { + -webkit-transform: translate(13.8px, 111px) rotate(1.2deg); + transform: translate(13.8px, 111px) rotate(1.2deg); + } + 74% { + -webkit-transform: translate(13.5px, 112.5px) rotate(1.5deg); + transform: translate(13.5px, 112.5px) rotate(1.5deg); + } + 76% { + -webkit-transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); + transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); + } + 79% { + -webkit-transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); + } + 81% { + -webkit-transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); + transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); + } + 83% { + -webkit-transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); + transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); + } + 84% { + -webkit-transform: translate(-14.7px, 139.5px) rotate(29.7deg); + transform: translate(-14.7px, 139.5px) rotate(29.7deg); + } + 85% { + -webkit-transform: translate(-15px, 139.5px) rotate(30deg); + transform: translate(-15px, 139.5px) rotate(30deg); + } + 86% { + -webkit-transform: translate(-14.7px, 139.5px) rotate(-0.3deg); + transform: translate(-14.7px, 139.5px) rotate(-0.3deg); + } + 86% { + -webkit-transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); + } + 88% { + -webkit-transform: translate(-13.5px, 156px) rotate(-1.5deg); + transform: translate(-13.5px, 156px) rotate(-1.5deg); + } + 90% { + -webkit-transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); + } + 93% { + -webkit-transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); + } + 95% { + -webkit-transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); + transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); + } + 97% { + -webkit-transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); + transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); + } + 99% { + -webkit-transform: translate(14.7px, 181.5px) rotate(-29.7deg); + transform: translate(14.7px, 181.5px) rotate(-29.7deg); + } + 100% { + -webkit-transform: translate(15px, 181.5px) rotate(-30deg); + transform: translate(15px, 181.5px) rotate(-30deg); + } +} +@-webkit-keyframes ld-leaf-px { + 0% { + -webkit-transform: translate(-14.7px, -117px) rotate(-0.3deg); + transform: translate(-14.7px, -117px) rotate(-0.3deg); + } + 1% { + -webkit-transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, -112.5px) rotate(-0.6deg); + } + 2% { + -webkit-transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); + transform: translate(-13.8px, -102.00000000000001px) rotate(-1.2deg); + } + 3% { + -webkit-transform: translate(-13.5px, -100.5px) rotate(-1.5deg); + transform: translate(-13.5px, -100.5px) rotate(-1.5deg); + } + 5% { + -webkit-transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, -87px) rotate(-7.800000000000001deg); + } + 7% { + -webkit-transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, -79.5px) rotate(-20.400000000000002deg); + } + 10% { + -webkit-transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); + transform: translate(12.9px, -76.5px) rotate(-27.900000000000002deg); + } + 12% { + -webkit-transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); + transform: translate(14.399999999999999px, -75px) rotate(-29.4deg); + } + 13% { + -webkit-transform: translate(14.7px, -75px) rotate(-29.7deg); + transform: translate(14.7px, -75px) rotate(-29.7deg); + } + 14% { + -webkit-transform: translate(15px, -75px) rotate(-30deg); + transform: translate(15px, -75px) rotate(-30deg); + } + 15% { + -webkit-transform: translate(14.399999999999999px, -69px) rotate(0.6deg); + transform: translate(14.399999999999999px, -69px) rotate(0.6deg); + } + 16% { + -webkit-transform: translate(13.8px, -58.5px) rotate(1.2deg); + transform: translate(13.8px, -58.5px) rotate(1.2deg); + } + 19% { + -webkit-transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); + transform: translate(7.199999999999999px, -45px) rotate(7.800000000000001deg); + } + 21% { + -webkit-transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999px, -37.5px) rotate(20.400000000000002deg); + } + 24% { + -webkit-transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); + transform: translate(-12.9px, -33px) rotate(27.900000000000002deg); + } + 26% { + -webkit-transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); + transform: translate(-14.399999999999999px, -33px) rotate(29.4deg); + } + 27% { + -webkit-transform: translate(-14.7px, -31.5px) rotate(29.7deg); + transform: translate(-14.7px, -31.5px) rotate(29.7deg); + } + 28% { + -webkit-transform: translate(-15px, -31.5px) rotate(30deg); + transform: translate(-15px, -31.5px) rotate(30deg); + } + 29% { + -webkit-transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, -27px) rotate(-0.6deg); + } + 30% { + -webkit-transform: translate(-13.8px, -16.5px) rotate(-1.2deg); + transform: translate(-13.8px, -16.5px) rotate(-1.2deg); + } + 31% { + -webkit-transform: translate(-13.5px, -15px) rotate(-1.5deg); + transform: translate(-13.5px, -15px) rotate(-1.5deg); + } + 33% { + -webkit-transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, -1.5px) rotate(-7.800000000000001deg); + } + 36% { + -webkit-transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, 4.5px) rotate(-20.400000000000002deg); + } + 38% { + -webkit-transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); + transform: translate(12.9px, 9px) rotate(-27.900000000000002deg); + } + 40% { + -webkit-transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); + transform: translate(14.399999999999999px, 10.500000000000002px) rotate(-29.4deg); + } + 41% { + -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); + transform: translate(14.7px, 10.500000000000002px) rotate(-29.7deg); + } + 42% { + -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); + transform: translate(15px, 10.500000000000002px) rotate(-30deg); + } + 43% { + -webkit-transform: translate(15px, 10.500000000000002px) rotate(-30deg); + transform: translate(15px, 10.500000000000002px) rotate(-30deg); + } + 43% { + -webkit-transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); + transform: translate(14.7px, 10.500000000000002px) rotate(0.3deg); + } + 43% { + -webkit-transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); + transform: translate(14.399999999999999px, 16.5px) rotate(0.6deg); + } + 45% { + -webkit-transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); + transform: translate(13.8px, 25.500000000000004px) rotate(1.2deg); + } + 45% { + -webkit-transform: translate(13.5px, 27px) rotate(1.5deg); + transform: translate(13.5px, 27px) rotate(1.5deg); + } + 48% { + -webkit-transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); + transform: translate(7.199999999999999px, 40.5px) rotate(7.800000000000001deg); + } + 50% { + -webkit-transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999px, 48px) rotate(20.400000000000002deg); + } + 52% { + -webkit-transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); + transform: translate(-12.9px, 51.00000000000001px) rotate(27.900000000000002deg); + } + 54% { + -webkit-transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); + transform: translate(-14.399999999999999px, 52.5px) rotate(29.4deg); + } + 56% { + -webkit-transform: translate(-14.7px, 54px) rotate(29.7deg); + transform: translate(-14.7px, 54px) rotate(29.7deg); + } + 57% { + -webkit-transform: translate(-14.7px, 54px) rotate(-0.3deg); + transform: translate(-14.7px, 54px) rotate(-0.3deg); + } + 58% { + -webkit-transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, 58.5px) rotate(-0.6deg); + } + 59% { + -webkit-transform: translate(-13.5px, 70.5px) rotate(-1.5deg); + transform: translate(-13.5px, 70.5px) rotate(-1.5deg); + } + 62% { + -webkit-transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, 84.00000000000001px) rotate(-7.800000000000001deg); + } + 64% { + -webkit-transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, 91.5px) rotate(-20.400000000000002deg); + } + 67% { + -webkit-transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); + transform: translate(12.9px, 94.5px) rotate(-27.900000000000002deg); + } + 69% { + -webkit-transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); + transform: translate(14.399999999999999px, 96px) rotate(-29.4deg); + } + 70% { + -webkit-transform: translate(14.7px, 96px) rotate(-29.7deg); + transform: translate(14.7px, 96px) rotate(-29.7deg); + } + 71% { + -webkit-transform: translate(15px, 96px) rotate(-30deg); + transform: translate(15px, 96px) rotate(-30deg); + } + 72% { + -webkit-transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); + transform: translate(14.399999999999999px, 102.00000000000001px) rotate(0.6deg); + } + 73% { + -webkit-transform: translate(13.8px, 111px) rotate(1.2deg); + transform: translate(13.8px, 111px) rotate(1.2deg); + } + 74% { + -webkit-transform: translate(13.5px, 112.5px) rotate(1.5deg); + transform: translate(13.5px, 112.5px) rotate(1.5deg); + } + 76% { + -webkit-transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); + transform: translate(7.199999999999999px, 126px) rotate(7.800000000000001deg); + } + 79% { + -webkit-transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); + transform: translate(-5.399999999999999px, 133.5px) rotate(20.400000000000002deg); + } + 81% { + -webkit-transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); + transform: translate(-12.9px, 138px) rotate(27.900000000000002deg); + } + 83% { + -webkit-transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); + transform: translate(-14.399999999999999px, 139.5px) rotate(29.4deg); + } + 84% { + -webkit-transform: translate(-14.7px, 139.5px) rotate(29.7deg); + transform: translate(-14.7px, 139.5px) rotate(29.7deg); + } + 85% { + -webkit-transform: translate(-15px, 139.5px) rotate(30deg); + transform: translate(-15px, 139.5px) rotate(30deg); + } + 86% { + -webkit-transform: translate(-14.7px, 139.5px) rotate(-0.3deg); + transform: translate(-14.7px, 139.5px) rotate(-0.3deg); + } + 86% { + -webkit-transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); + transform: translate(-14.399999999999999px, 144px) rotate(-0.6deg); + } + 88% { + -webkit-transform: translate(-13.5px, 156px) rotate(-1.5deg); + transform: translate(-13.5px, 156px) rotate(-1.5deg); + } + 90% { + -webkit-transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); + transform: translate(-7.199999999999999px, 169.49999999999997px) rotate(-7.800000000000001deg); + } + 93% { + -webkit-transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); + transform: translate(5.399999999999999px, 177px) rotate(-20.400000000000002deg); + } + 95% { + -webkit-transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); + transform: translate(12.9px, 180px) rotate(-27.900000000000002deg); + } + 97% { + -webkit-transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); + transform: translate(14.399999999999999px, 181.5px) rotate(-29.4deg); + } + 99% { + -webkit-transform: translate(14.7px, 181.5px) rotate(-29.7deg); + transform: translate(14.7px, 181.5px) rotate(-29.7deg); + } + 100% { + -webkit-transform: translate(15px, 181.5px) rotate(-30deg); + transform: translate(15px, 181.5px) rotate(-30deg); + } +} +.ld.ld-leaf-px { + -webkit-animation: ld-leaf-px 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); + animation: ld-leaf-px 4s infinite cubic-bezier(0.1, 0.5, 0.1, 0.5); +} +@keyframes ld-slot-px { + 0% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 9.09% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 9.1% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 16.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 17% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 23.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 23.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 29.59% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 29.6% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 34.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 34.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 38.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 38.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 41.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 41.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 44.39% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 44.4% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 46.29% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 46.3% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 47.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 47.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 48.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 48.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.39% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 49.4% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 49.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 50.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 50.59% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50.6% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 51.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 51.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 52.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 52.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 53.690000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 53.7% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 55.59% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 55.6% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 58.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 58.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 61.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 61.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 65.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 65.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 70.39% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 70.4% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 76.19% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 76.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 82.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 83% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 90.89% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 90.9% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 99.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 100% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } +} +@-webkit-keyframes ld-slot-px { + 0% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 9.09% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 9.1% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 16.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 17% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 23.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 23.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 29.59% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 29.6% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 34.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 34.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 38.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 38.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 41.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 41.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 44.39% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 44.4% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 46.29% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 46.3% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 47.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 47.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 48.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 48.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.39% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 49.4% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.79% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 49.8% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 49.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 50.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 50.59% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 50.6% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 51.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 51.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 52.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 52.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 53.690000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 53.7% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 55.59% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 55.6% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 58.190000000000005% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 58.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 61.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 61.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 65.49% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 65.5% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 70.39% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 70.4% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 76.19% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 76.2% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 82.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 83% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 90.89% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 90.9% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } + 99.99% { + -webkit-transform: translate(0, 100px); + transform: translate(0, 100px); + } + 100% { + -webkit-transform: translate(0, -100px); + transform: translate(0, -100px); + } +} +.ld.ld-slot-px { + -webkit-animation: ld-slot-px 6s infinite linear; + animation: ld-slot-px 6s infinite linear; +} diff --git a/build/lib/gradio/static/css/style.css b/build/lib/gradio/static/css/style.css new file mode 100644 index 0000000000..a9ec927984 --- /dev/null +++ b/build/lib/gradio/static/css/style.css @@ -0,0 +1,95 @@ +body#lib { + font-family: 'Open Sans', sans-serif; + margin: 20px 0 0; + position: relative; + padding-bottom: 60px; +} +button, input[type="submit"], input[type="reset"], input[type="text"], input[type="button"], select[type="submit"] { + border: none; + font: inherit; + outline: inherit; + -webkit-appearance: none; +} +select { + font: inherit; +} +label, input[type=radio], input[type=checkbox], select, input[type=range], button, input[type="submit"], input[type="reset"], input[type="button"], select[type="submit"] { + cursor: pointer; +} + +.loading_time { + color: #e67e22; + text-align: right; + font-family: monospace; +} +.share { + text-align: center; + margin-bottom: 10px; + font-size: 14px; +} +.share-copy { + background-color: whitesmoke; + padding: 4px; + border-radius: 2px; +} +.title { + text-align: center; +} +.container { + max-width: 1028px; + width: 100%; + margin: 0 auto; + padding-left: 24px; + padding-right: 24px; + box-sizing: border-box; +} +.panels { + display: flex; + flex-flow: row; + flex-wrap: wrap; + justify-content: center; +} +button.primary { + color: white; + background-color: #e67e22; +} +button.secondary { + color: black; + background-color: #F6F6F6; +} +.examples table { + border-collapse: collapse; + font-family: monospace; + padding: 8px; + background-color: whitesmoke; + border-right: solid 4px whitesmoke; + border-left: solid 4px whitesmoke; + border-bottom: solid 4px whitesmoke; +} +.examples th { + padding: 8px 16px; + text-align: left; + font-size: 18px; +} +.examples td { + padding: 8px; + cursor: pointer; +} + +.examples tbody tr:nth-child(odd) { + background-color: white; +} +.examples tbody tr:hover { + background-color: lightgray; +} +#credit { + text-align: center; + position: absolute; + left: 0; + right: 0; + bottom: 18px; + height: 24px; +} +#credit img { + height: 24px; +} \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/cropper.min.css b/build/lib/gradio/static/css/vendor/cropper.min.css new file mode 100644 index 0000000000..6bdccb8add --- /dev/null +++ b/build/lib/gradio/static/css/vendor/cropper.min.css @@ -0,0 +1,9 @@ +/*! + * Cropper.js v1.5.7 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2020-05-23T05:22:57.283Z + */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/icons.svg b/build/lib/gradio/static/css/vendor/icons.svg new file mode 100644 index 0000000000..cc8298ad0c --- /dev/null +++ b/build/lib/gradio/static/css/vendor/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png b/build/lib/gradio/static/css/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e6bfc085f51b392569e58b72d454586b900f61 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq?iMILR?p^S|wQb`zMgg=jq}Y hQo)$KfKh^VF#`ir1OsEt!yO=<44$rjF6*2UngAlC6uAHZ literal 0 HcmV?d00001 diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_444444_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_444444_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..df4e37378517044e8d109e5682b0d411d2eff92e GIT binary patch literal 3266 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 IM6N<$f@ur&%K!iX literal 0 HcmV?d00001 diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_777620_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_777620_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..ee49e9e501496827b5d632892a15f87535455af8 GIT binary patch literal 3262 zcmV;v3_ zc^-FmAaHOWcz7Ove;#*rA9i&gc6A_kbsu+jAa{2jcXc0jb{}_jA9i&h@#a7r0000G zbW%=J02%)eGYC$Td3yaCzz@6RA`5pBdNvjp@q zWYIGRrDB;gKH6IlxP~*k3pnqVrmYYGgCgJ{ioi9re#cQEirXGzHg}*-;3D#(AZziC zu;TCz9Bk2}4gfORmH-5B2K*3m27dM_V2gMP-v33kv9YnS{wBnK6(sO?y}A`r)}_#2 z=Yc`X(6p|^6WjvwDnor_w`;f|z;4YmQND(jcR>UMg=`++T0V>ylq$m_lF6o72hP`d z;4)!Ftpm?+#?m}c<@^l1<5Tb)8yg!NF?-j?*Zz7~fIG+wDd+h-F4G)j0d6q=h;mR2 zE||sZjtr*~8NDSTPY}f8?q5Vy^!Svwf&@{1#NjBeXSfLnpOAvWxK})_q2Tyl9|cJi zLf|JwZ!yy#i(Z!0R?05OCQ&t)p>!k@EJ05MTw|JAI&NapYCZ zI;8FbP6nBmrr8QAfNvTC!tF|pEJIOPhq#UrER>J3mf)tQSjl}4$4)^69P)xC06{K* z1yX>9hi|IT_W*(a7&bOGVsRb_9}I*c|16WzC>aQ!poI?xfgzeNNQa{e$M6t^)A$sb z+#NacskoPANr9dyyUJ>X1JAht`*(O=>P3BEkwgJkrm~8LtO#g9slhW7>OZ&PP!!P# zss_L7=ZCOTas8&PJWK!vN!VRLaX+2&zrS~Nn+ICLs}Ma8n@12zVffO6tGsL;@NwOS zQ~RKdd{Fv1XuozMy4k5$_Ko~>939-fo*I*2SjIj2AMChB4JJ@KQLs;4x0O3;aeXr!J zzMh?(-kzR2TmLhD^Qx=r{rg|vdo}gSx=d%Ta5m!@OyF_PWH~;?E6zy-79?{W<&*(o zG4KRg{#BB6qb#Y1t3}U4X zHAowfAC;8+b^&q;&L9CwwgW7NbOLrO3t^Vdq6U~oj8MrmR1Gkx3OI{V03fxj9|GEH z;`aj1ZXOs_iN>i&vyy30rc9Z%=71)RQ@c%*sDt+@rF#HrRgms60s=8&p|o4|2K@*7 z*i&4@8adsKMOKS4)vZ77xL-OblM_>&^<4W|%)ULZ7!j&RuzkSw@Xm7UkEzFXNC#x0 zp5QP@4wRcp?eWIOM#CG~6axcyqISC_2{;3W3kAb5Z33(eEVtWj+it!6jb(S-mCp@n z!MNRd#K59ASlS5PFSU=Y5qCoIYBn}Pm4N9Gm8}6=1C|UqWeF%b1K<9O7`RX{IzgdC z!pgut4#fZ<2EGp2v*bHAg+fs$aFxv+j!98KmL-(no~jFl0^3Va?zl^EZoH{B(;dZ(!kRJ+|S6J6N-^MmS=7-%{JolZv#w7h|3 zZ@@?bb<}9ofIs1`kFKo~xLGK?#)@T>A=k2NN5KMO-B$^SfpM1r{x}za7--6V?B{`1 zQmTv}hNg}>NG|rC?*}}l`0_xVtOh_|8CaA6PS&mAaM+}0$gI&=iJ#-O-=j>KUQ)gC zD@rRYk(Ob@lvdPK_xTQh+cK=t_cO}gIMO{Pr^m^*)Ip6@&Dsqv2;~%X?^hT81oSjY%2q7*!Toi*;RlIU`ztro4>VO za0ytF&?k`h-}DfKT5_Da*DUV)dxQxhrf~+|eDb940tk|+T?~X9p=BkOWzk-9#|NI$ z9$+}!QwBnxgaLd&oT_^B!$s7zfyg`d0T2M=4LGj7_uem9-fv*#(Yxdm(psQ1(_dPF zXCPl)s9T~kpG@ZamdnXweCPh4rf%mY|BRa~aBsx2TR6DIY(Hmz`(B|PJdXi`0W5d0 zgKdiS$ln!xCuQ?5^tFLVo}lIe!yL2mh{zg1FoZL3O`fW$JYVT(1Bk`CU*BE;TvGEu z#ouHS1N-tww^b*VNJ&07EwtM%0o>k`1cojF^WghkF|f1UNjg>r9JK)&KqgNgKp064 z>>M1dx?(((&r2f)LWCvDH&9*+)%l}BA$lm+l(wG3fKFh=1`t3x{P2Shes8%8Z2P~c z!~o0XIfx}jP|-CI+${JaEdQi>+8Wp-GEuFO+$HxcD~}#kESaSGB5$Bu-R*h<&^1uL zbt~Xx7@lertXy)@qDP`X{KuhY{()^(l*F{h$uRUu?5i3m-@PjaL?;+f3O8x1L1Y5* z0(@ySLblD%mLLXP^z?%u`Ys(e4@^bh{Iw+X5#@5KmPm$SrcBSFi?mxGW4t*ZB^6>PbRwN{ZK; z^fcLj5_Q;=W57upppbn4sQHCXz4Do_{m7B@i-}3JQwl3`xB>J-RSugLJvu~B^<(Pa zfn)rE7&v+%1D6r2rwv@Lk(0UJa4i>rGEmCF@hxguz#Evm{&_$X$k>iq8%ShI?)pOl zI3a<_i|`Po(0;{x*1)PHFp`k8PpW}Q?{09iM&P>|`KKE`fRjf7F-@W)z-8xGuXGJC z>E_8|dLexZ{DxjgOy{IbnKB&;E;CIe^GgzeK&R3Cw(l6;$D{_}9e^NyUhlc{{+vE> z%kn+STh__8)ou5%MnZTWYl4=#R(fJU+G0Q`5E{FgCp3V*Hh@h7 zBJd@M0j!7t-zEvA+$WLo@1E<&a*CQ?H4iJ~^mU+o>ax7wAxElVQf zI(fT&;|9kJZ?xNvp=YaQIW^fe`$tWC2?lH7LuH^4i(?iO784dNro-K_S z=ytoi&0{$|U8+-l#r4abKY0T)Ey4x-_oylc%wx8UMYGh0sNAPanO@k1|=fJf5=O={YL@p1=}ttQ#K0yaxtWEs@aZ_732W zGfcn~V=XBIh$YsF#Uy~4*1)Y;P5I*2NGK7^Jb`$762Q{T6OaH{ w1u*+jU{nC-HxEbvGnxm+%PiUdDATm{Kg+;(Yu`PyX#fBK07*qoM6N<$f*&smj{pDw literal 0 HcmV?d00001 diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_777777_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_777777_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b01ff3deebd1fca16da650534e7e44abbe72cbf5 GIT binary patch literal 3266 zcmV;z3_bISP) zd3kqtcW`iUczAe!e}8v(cXoDmc6N4mcXxMpcXxMpcXxMoc6N7ncXoDm^wSBc0000G zbW%=J02%)eGYCz;ke@6eazJ9us8KIa000azNklTd3yaCzz@6RA`5pBdNvjp@q zWYIGRrDB;gKH6IlxP~*k3pnqVrmYYGgCgJ{ioi9re#cQEirXGzHg}*-;3D#(AZziC zu;TCz9Bk2}4gfORmH-5B2K*3m27dM_V2gMP-v33kv9YnS{wBnK6(sO?y}A`r)}_#2 z=Yc`X(6p|^6WjvwDnor_w`;f|z;4YmQND(jcR>UMg=`++T0V>ylq$m_lF6o72hP`d z;4)!Ftpm?+#?m}c<@^l1<5Tb)8yg!NF?-j?*Zz7~fIG+wDd+h-F4G)j0d6q=h;mR2 zE||sZjtr*~8NDSTPY}f8?q5Vy^!Svwf&@{1#NjBeXSfLnpOAvWxK})_q2Tyl9|cJi zLf|JwZ!yy#i(Z!0R?05OCQ&t)p>!k@EJ05MTw|JAI&NapYCZ zI;8FbP6nBmrr8QAfNvTC!tF|pEJIOPhq#UrER>J3mf)tQSjl}4$4)^69P)xC06{K* z1yX>9hi|IT_W*(a7&bOGVsRb_9}I*c|16WzC>aQ!poI?xfgzeNNQa{e$M6t^)A$sb z+#NacskoPANr9dyyUJ>X1JAht`*(O=>P3BEkwgJkrm~8LtO#g9slhW7>OZ&PP!!P# zss_L7=ZCOTas8&PJWK!vN!VRLaX+2&zrS~Nn+ICLs}Ma8n@12zVffO6tGsL;@NwOS zQ~RKdd{Fv1Xuo)61G6PIB96HUhY(@|AdDg5gji#PYcK{uMp%15BJ@qj9c;ADAuMeTfN-hzzE_v8 z`nq>^dS`m>Z2iyp&8w}d_wRpw?^V|;<1(GOg6WK7Fo8!sljZmXuQ(@B((M;>T}~Mg zHpa|-*G@A5W@2`J0+%_A^c3XS5$b_FF$g*Zu}QDDbFOF{y#c1ck(iBstX@1N0|v3u zh8m;{$d67+e!Bp<1ZR-I7ux|ALplMwm4z@1XHf%8Lq@1*8mb1ER0W*HC`e8WzdZo7 z)x_@woZUPytm62uQB#p=P^L_ov}S-NjZ(XPn;QZU}a#b-EP}<>#c7sx#O;U zZb%Ep?ao66=Doq1ArL#CS=c|@7NRyi#ma;Z0>MO3QJ^JL=o<(x=<*vy#(dRU4kp$XkW23 zVHiHcz&y(DrVLyQyn$=JV{@<%oj@Tf7o36S3|W>?a{s;x9B|CWZZ)T_y)t0D0rm#+ z#%&%%=xPI=w0dx`?+)zjF6jhbyL#uQy98J7G_`?hr_*7g3%h@QP+brMO=lpAA~DeN z29~@5BMH<|qhSO7gu6bvwoc$?q3{|jmQjXW%Z?odbBJ|cB_IYyT>|*y&`k`WDf_XX z2UbX_GI|)AI_e;~*n7So@QC8e19h_M13hJ6UII8?w+4ejlb#{7N+TtH#%sSzFR3zR zdgWJ?R!}4@!-grXu&M6z5r7RD*68^eWp5PeoDPDC z>zy<1_Yelw2nK^br|$Qi-H{}aHF&v*plkcB=VhH?YneoSJaLA?lC@-#RdRUp+S;0& zs2RDAVW2zar%yL6scPngHO zXoP{~SkfV?Y2JRvu`m1O05tx8+$)x@3NEen{~cpC1WMb=02?+wffaY6&;~Fff$h!T zTF%)79LZA>$oo%v2trLAm)vXS_x(M>ltQLa2Ht$~q~`)CB~!Z?2-XA3N-WDod(9mm z2z|Sc!C+4r2z(L-@BwkE>do8psA&VCckBZo0LB||Tz&7oU$DI2z}}ac_n%KLfzXwI zu)JlNuLqlH1LVcIh9M;xd}65S3^a_o6vllC7(vssQ1|)3`JlsIzGe-q^<7g=qz&|e zx_;x~diC>w{u=I?tP>40?@pqIA?0NJ|C8ul@(F3p(V6Knjnbe;UwdWB6xG}?1MUyM zUp$fKFnj{gvlML8j+;VWl_!hCy9ZU<++8E5AC$r$TZS@iTtuu5&vNp8LO-zVz8_V! z^Kl09)w#MQDznLCzHhmdJjO@&`!#htFZyTPWPy7dzO_)k1A4dQhlK}(5dcryaDJM zDBrqO;$#?}XcR18a?zqoqCfn{p=SPpZB>-Sw8zOX^hxZi8YthrD+WZz7*Gl}X{$kG zO5_Fj(r5&1o1ZN}47lj&N2T!lG=3g91%3P1lF&z#%c)u-8HUfHOqnijIQ$g&9i5AI zD*omQJUo{GWLQREBP;e-u9MRdx+J8b(%!8#bDd!U=6q|42IYF4!i0}LT*Zm z*PHY-*?$s6Y|1giGy673X&iX3hL{ZN&|rbU+y(N+DJ z`uE_tL6I0ZdLaXs5v!{WT&|Imx!!Os7l1NQ%)#+CwJhKb%v}GxL=(u^j#(Q>WQy+k zLjpK9fk}(-5XHcL#Cz7jiXj}$UF(7R*AQT9V-OLjjKu;UM zrU4Q762t(O#ei>i~-`Q)qs|+foYBcpMV|(U(*INPnq4suE9CTgRT*$U&G9@n1y5h?9=W&LmA$Qo z^zS-(t9|1J#|&WhemVM+H!#&AoWp;Qs$#%AW=ktDU-Y>7^W;* zji>B43AOZlf?>+C-FV7=C+3$GAy#>q$-?D$%6=#3u>5-hOTe*ixF7Q#7+A4HLZjO| zfIp5CBHeyUzU>K^m}#kHdRSR4AJ`x6sV z+hYjzc5h(Rc?{AFDV)TB`cWN?p*A#}K#696i7vq~0ncHBz)&J7q8W}dAnyruvDqSA z(M5%XMzvK@azdoqF;Yayaaa=%GuiLt9Ma?yjqG=FrZxFgEBj5rub?tz%47hXgr_R~ zcZHf$Hn5cLxYZKEqzy2ik%1Ok2~&ockRr_aCvg5XaQ>qpQ>IKWyB6sz#7rrfusPlT zgW1BuaRwF>E}TmO^1+2?n1ES~wV(_jmRMU{Oaho{4cv;=ln;K5gc8Bj6NtAb0W3^C z0SSOr0Mj1@Mg?$w^MC|!hBa`!%!2)oGM%>m2jQx9-@)k2fdBvi07*qoM6N<$f|1D_ AyZ`_I literal 0 HcmV?d00001 diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_cc0000_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_cc0000_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..8920193948f0642fb2e4e722b702bae4e26bfaf4 GIT binary patch literal 3262 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 literal 0 HcmV?d00001 diff --git a/build/lib/gradio/static/css/vendor/images/ui-icons_ffffff_256x240.png b/build/lib/gradio/static/css/vendor/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..1cba4313d3b931df8231fd958084bb9dc27e31bd GIT binary patch literal 3264 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:0}.jexcel_container.fullscreen.with-toolbar{height:calc(100% - 46px)}.jexcel_content{display:inline-block;box-sizing:border-box;padding-right:3px;padding-bottom:3px;position:relative;scrollbar-width:thin;scrollbar-color:#666 transparent}@supports (-moz-appearance:none){.jexcel_content{padding-right:10px}}.jexcel_content::-webkit-scrollbar{width:5px;height:5px}.jexcel_content::-webkit-scrollbar-track{background:#eee}.jexcel_content::-webkit-scrollbar-thumb{background:#666}.jexcel{border-collapse:separate;table-layout:fixed;white-space:nowrap;empty-cells:show;border:0;background-color:#fff;width:0;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.jexcel>thead>tr>td{border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid transparent;border-bottom:1px solid transparent;background-color:#f3f3f3;padding:2px;cursor:pointer;box-sizing:border-box;overflow:hidden;position:-webkit-sticky;position:sticky;top:0;z-index:2}.with-toolbar .jexcel>thead>tr>td{top:42px}.jexcel>thead>tr>td.dragging{background-color:#fff;opacity:.5}.jexcel>thead>tr>td.selected{background-color:#dcdcdc}.jexcel>thead>tr>td.arrow-up{background-repeat:no-repeat;background-position:center right 5px;background-image:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 14l5-5 5 5H7z' fill='gray'/%3E%3C/svg%3E");text-decoration:underline}.jexcel>thead>tr>td.arrow-down{background-repeat:no-repeat;background-position:center right 5px;background-image:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='gray'/%3E%3C/svg%3E");text-decoration:underline}.jexcel>tbody>tr>td:first-child{position:relative;background-color:#f3f3f3;text-align:center}.jexcel>tbody.resizable>tr>td:first-child::before{content:'\00a0';width:100%;height:3px;position:absolute;bottom:0;left:0;cursor:row-resize}.jexcel>tbody.draggable>tr>td:first-child::after{content:'\00a0';width:3px;height:100%;position:absolute;top:0;right:0;cursor:move}.jexcel>tbody>tr.dragging>td{background-color:#eee;opacity:.5}.jexcel>tbody>tr>td{border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid transparent;border-bottom:1px solid transparent;padding:4px;white-space:nowrap;box-sizing:border-box;line-height:1em}.jexcel>tbody>tr>td:last-child{overflow:hidden}.jexcel>tbody>tr>td>img{display:inline-block;max-width:100px}.jexcel>tbody>tr>td.readonly{color:rgba(0,0,0,.3)}.jexcel>tbody>tr.selected>td:first-child{background-color:#dcdcdc}.jexcel>tbody>tr>td>input,.jexcel>tbody>tr>td>select,.jexcel>tbody>tr>td>textarea{border:0;border-radius:0;outline:0;width:100%;margin:0;padding:0;background-color:transparent;box-sizing:border-box}.jexcel>tbody>tr>td>textarea{resize:none;padding-top:6px!important}.jexcel>tbody>tr>td>input[type=checkbox]{width:12px;margin-top:2px}.jexcel>tbody>tr>td>input[type=radio]{width:12px;margin-top:2px}.jexcel>tbody>tr>td>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-repeat:no-repeat;background-position-x:100%;background-position-y:40%;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+)}.jexcel>tbody>tr>td.jexcel_dropdown{background-repeat:no-repeat;background-position:top 50% right 5px;background-image:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='lightgray'/%3E%3C/svg%3E");text-overflow:ellipsis;overflow-x:hidden}.jexcel>tbody>tr>td.jexcel_dropdown.jexcel_comments{background:url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='lightgray'/%3E%3C/svg%3E") top 50% right 5px no-repeat,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFuGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTlhZDJmOC1kMDI2LTI1NDItODhjOS1iZTRkYjkyMmQ0MmQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkOGI5NDUyMS00ZjEwLWQ5NDktYjUwNC0wZmU1N2I3Nzk1MDEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIHN0RXZ0OndoZW49IjIwMTktMDEtMzFUMTg6NTU6MDhaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmExOWFkMmY4LWQwMjYtMjU0Mi04OGM5LWJlNGRiOTIyZDQyZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4En6MDAAAAX0lEQVQYlX3KOw6AIBBAwS32RpJADXfx0pTET+ERZJ8F8RODFtONsG0QAoh0CSDM82dqodaBdQXnfoLZQM7gPai+wjNNE8R4pTuAYNZSKZASqL7CMy0LxNgJp30fKYUDi3+vIqb/+rUAAAAASUVORK5CYII=) top right no-repeat}.jexcel>tbody>tr>td>.color{width:90%;height:10px;margin:auto}.jexcel>tbody>tr>td>a{text-decoration:underline}.jexcel>tbody>tr>td.highlight>a{color:#00f;cursor:pointer}.jexcel>tfoot>tr>td{border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid transparent;border-bottom:1px solid transparent;background-color:#f3f3f3;padding:2px;cursor:pointer;box-sizing:border-box;overflow:hidden}.jexcel .highlight{background-color:rgba(0,0,0,.05)}.jexcel .highlight-top{border-top:1px solid #000;box-shadow:0 -1px #ccc}.jexcel .highlight-left{border-left:1px solid #000;box-shadow:-1px 0 #ccc}.jexcel .highlight-right{border-right:1px solid #000}.jexcel .highlight-bottom{border-bottom:1px solid #000}.jexcel .highlight-top.highlight-left{box-shadow:-1px -1px #ccc;-webkit-box-shadow:-1px -1px #ccc;-moz-box-shadow:-1px -1px #ccc}.jexcel .highlight-selected{background-color:rgba(0,0,0,0)}.jexcel .selection{background-color:rgba(0,0,0,.05)}.jexcel .selection-left{border-left:1px dotted #000}.jexcel .selection-right{border-right:1px dotted #000}.jexcel .selection-top{border-top:1px dotted #000}.jexcel .selection-bottom{border-bottom:1px dotted #000}.jexcel_corner{position:absolute;background-color:#000;height:1px;width:1px;border:1px solid #fff;top:-2000px;left:-2000px;cursor:crosshair;box-sizing:initial;z-index:30;padding:2px}.jexcel .editor{outline:0 solid transparent;overflow:visible;white-space:nowrap;text-align:left;padding:0;box-sizing:border-box;overflow:visible!important}.jexcel .editor>input{padding-left:4px}.jexcel .editor .jupload{position:fixed;top:100%;z-index:40;user-select:none;-webkit-font-smoothing:antialiased;font-size:.875rem;letter-spacing:.2px;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);padding:10px;background-color:#fff;width:300px;min-height:225px;margin-top:2px}.jexcel .editor .jupload img{width:100%;height:auto}.jexcel .editor .jexcel_richtext{position:fixed;top:100%;z-index:40;user-select:none;-webkit-font-smoothing:antialiased;font-size:.875rem;letter-spacing:.2px;-webkit-box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);padding:10px;background-color:#fff;min-width:280px;max-width:310px;margin-top:2px;text-align:left}.jexcel .editor .jclose:after{position:absolute;top:0;right:0;margin:10px;content:'close';font-family:'Material icons';font-size:24px;width:24px;height:24px;line-height:24px;cursor:pointer;text-shadow:0 0 5px #fff}.jexcel,.jexcel td,.jexcel_corner{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;user-drag:none}.jexcel_textarea{position:absolute;top:-999px;left:-999px;width:1px;height:1px}.jexcel .dragline{position:absolute}.jexcel .dragline div{position:relative;top:-6px;height:5px;width:22px}.jexcel .dragline div:hover{cursor:move}.jexcel .onDrag{background-color:rgba(0,0,0,.6)}.jexcel .error{border:1px solid red}.jexcel thead td.resizing{border-right-style:dotted!important;border-right-color:red!important}.jexcel tbody tr.resizing>td{border-bottom-style:dotted!important;border-bottom-color:red!important}.jexcel tbody td.resizing{border-right-style:dotted!important;border-right-color:red!important}.jexcel .jdropdown-header{border:0!important;outline:0!important;width:100%!important;height:100%!important;padding:0!important;padding-left:8px!important}.jexcel .jdropdown-container{margin-top:1px}.jexcel .jdropdown-container-header{padding:0;margin:0;height:inherit}.jexcel .jdropdown-picker{border:0!important;padding:0!important;width:inherit;height:inherit}.jexcel .jexcel_comments{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFuGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTlhZDJmOC1kMDI2LTI1NDItODhjOS1iZTRkYjkyMmQ0MmQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkOGI5NDUyMS00ZjEwLWQ5NDktYjUwNC0wZmU1N2I3Nzk1MDEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIHN0RXZ0OndoZW49IjIwMTktMDEtMzFUMTg6NTU6MDhaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmExOWFkMmY4LWQwMjYtMjU0Mi04OGM5LWJlNGRiOTIyZDQyZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4En6MDAAAAX0lEQVQYlX3KOw6AIBBAwS32RpJADXfx0pTET+ERZJ8F8RODFtONsG0QAoh0CSDM82dqodaBdQXnfoLZQM7gPai+wjNNE8R4pTuAYNZSKZASqL7CMy0LxNgJp30fKYUDi3+vIqb/+rUAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:top right}.jexcel .sp-replacer{margin:2px;border:0}.jexcel>thead>tr.jexcel_filter>td>input{border:0;width:100%;outline:0}.jexcel_about{float:right;font-size:.7em;padding:2px;text-transform:uppercase;letter-spacing:1px;display:none}.jexcel_about a{color:#ccc;text-decoration:none}.jexcel_about img{display:none}.jexcel_filter{display:flex;justify-content:space-between;margin-bottom:4px}.jexcel_filter>div{padding:8px;align-items:center}.jexcel_pagination{display:flex;justify-content:space-between;align-items:center}.jexcel_pagination>div{display:flex;padding:10px}.jexcel_pagination>div:last-child{padding-right:10px;padding-top:10px}.jexcel_pagination>div>div{text-align:center;width:36px;height:36px;line-height:34px;border:1px solid #ccc;box-sizing:border-box;margin-left:2px;cursor:pointer}.jexcel_page{font-size:.8em}.jexcel_page_selected{font-weight:700;background-color:#f3f3f3}.jexcel_toolbar{display:flex;background-color:#f3f3f3;border:1px solid #ccc;padding:4px;margin:0 2px 4px 1px;position:sticky;top:0;z-index:21}.jexcel_toolbar:empty{display:none}.jexcel_toolbar i.jexcel_toolbar_item{width:24px;height:24px;padding:4px;cursor:pointer;display:inline-block}.jexcel_toolbar i.jexcel_toolbar_item:hover{background-color:#ddd}.jexcel_toolbar select.jexcel_toolbar_item{margin-left:2px;margin-right:2px;display:inline-block;border:0;background-color:transparent;padding-right:10px}.jexcel .dragging-left{background-repeat:no-repeat;background-position:top 50% left 0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M14 7l-5 5 5 5V7z'/%3E%3Cpath fill='none' d='M24 0v24H0V0h24z'/%3E%3C/svg%3E")}.jexcel .dragging-right{background-repeat:no-repeat;background-position:top 50% right 0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M10 17l5-5-5-5v10z'/%3E%3Cpath fill='none' d='M0 24V0h24v24H0z'/%3E%3C/svg%3E")}.jexcel_tabs .jexcel_tab{display:none}.jexcel_tabs .jexcel_tab_link{display:inline-block;padding:10px;padding-left:20px;padding-right:20px;margin-right:5px;margin-bottom:5px;background-color:#f3f3f3;cursor:pointer}.jexcel_tabs .jexcel_tab_link.selected{background-color:#ddd}.jexcel_hidden_index>colgroup>col:first-child,.jexcel_hidden_index>tbody>tr>td:first-child,.jexcel_hidden_index>thead>tr>td:first-child{display:none}.jexcel .jrating{display:inline-flex}.jexcel .jrating>div{zoom:.55}.jexcel .copying-top{border-top:1px dashed #000}.jexcel .copying-left{border-left:1px dashed #000}.jexcel .copying-right{border-right:1px dashed #000}.jexcel .copying-bottom{border-bottom:1px dashed #000}.jexcel .jexcel_column_filter{background-repeat:no-repeat;background-position:top 50% right 5px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='gray' width='18px' height='18px'%3E%3Cpath d='M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");text-overflow:ellipsis;overflow:hidden;padding:0;padding-left:6px;padding-right:20px}.jexcel thead .jexcel_freezed{left:0;z-index:3!important;box-shadow:2px 0 2px .2px #ccc!important;-webkit-box-shadow:2px 0 2px .2px #ccc!important;-moz-box-shadow:2px 0 2px .2px #ccc!important}.jexcel tbody .jexcel_freezed{position:relative;background-color:#fff;box-shadow:1px 1px 1px 1px #ccc!important;-webkit-box-shadow:2px 4px 4px .1px #ccc!important;-moz-box-shadow:2px 4px 4px .1px #ccc!important} \ No newline at end of file diff --git a/build/lib/gradio/static/css/vendor/jquery-ui.css b/build/lib/gradio/static/css/vendor/jquery-ui.css new file mode 100644 index 0000000000..7a779da47b --- /dev/null +++ b/build/lib/gradio/static/css/vendor/jquery-ui.css @@ -0,0 +1,1315 @@ +/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6 +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; + pointer-events: none; +} + + +/* Icons +----------------------------------*/ +.ui-icon { + display: inline-block; + vertical-align: middle; + margin-top: -.25em; + position: relative; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + +.ui-widget-icon-block { + left: 50%; + margin-left: -8px; + display: block; +} + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin: 2px 0 0 0; + padding: .5em .5em .5em .7em; + font-size: 100%; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: 0; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + cursor: pointer; + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-item-wrapper { + position: relative; + padding: 3px 1em 3px .4em; +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item-wrapper { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} +.ui-button { + padding: 0.25em 0.6em; + display: inline-block; + position: relative; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + /* Support: IE <= 11 */ + overflow: visible; +} + +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} + +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2em; + box-sizing: border-box; + text-indent: -9999px; + white-space: nowrap; +} + +/* no icon support for input elements */ +input.ui-button.ui-button-icon-only { + text-indent: 0; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon { + position: absolute; + top: 50%; + left: 50%; + margin-top: -8px; + margin-left: -8px; +} + +.ui-button.ui-icon-notext .ui-icon { + padding: 0; + width: 2.1em; + height: 2.1em; + text-indent: -9999px; + white-space: nowrap; + +} + +input.ui-button.ui-icon-notext .ui-icon { + width: auto; + height: auto; + text-indent: 0; + white-space: normal; + padding: .4em 1em; +} + +/* workarounds */ +/* Support: Firefox 5 - 40 */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-controlgroup { + vertical-align: middle; + display: inline-block; +} +.ui-controlgroup > .ui-controlgroup-item { + float: left; + margin-left: 0; + margin-right: 0; +} +.ui-controlgroup > .ui-controlgroup-item:focus, +.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { + z-index: 9999; +} +.ui-controlgroup-vertical > .ui-controlgroup-item { + display: block; + float: none; + width: 100%; + margin-top: 0; + margin-bottom: 0; + text-align: left; +} +.ui-controlgroup-vertical .ui-controlgroup-item { + box-sizing: border-box; +} +.ui-controlgroup .ui-controlgroup-label { + padding: .4em 1em; +} +.ui-controlgroup .ui-controlgroup-label span { + font-size: 80%; +} +.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { + border-left: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { + border-top: none; +} +.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { + border-right: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { + border-bottom: none; +} + +/* Spinner specific style fixes */ +.ui-controlgroup-vertical .ui-spinner-input { + + /* Support: IE8 only, Android < 4.4 only */ + width: 75%; + width: calc( 100% - 2.4em ); +} +.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { + border-top-style: solid; +} + +.ui-checkboxradio-label .ui-icon-background { + border-radius: .12em; +} +.ui-checkboxradio-radio-label .ui-icon-background { + width: 16px; + height: 16px; + border-radius: 1em; + overflow: visible; + border: none; +} +.ui-checkboxradio-label .ui-icon-background { + border: solid 1px lightgray; +} +.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, +.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { + background-image: none; + width: 8px; + height: 8px; + border-width: 5px; + border-style: solid; +} +.ui-checkboxradio-disabled { + pointer-events: none; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + left: .5em; + top: .3em; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-n { + height: 2px; + top: 0; +} +.ui-dialog .ui-resizable-e { + width: 2px; + right: 0; +} +.ui-dialog .ui-resizable-s { + height: 2px; + bottom: 0; +} +.ui-dialog .ui-resizable-w { + width: 2px; + left: 0; +} +.ui-dialog .ui-resizable-se, +.ui-dialog .ui-resizable-sw, +.ui-dialog .ui-resizable-ne, +.ui-dialog .ui-resizable-nw { + width: 7px; + height: 7px; +} +.ui-dialog .ui-resizable-se { + right: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-sw { + left: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-ne { + right: 0; + top: 0; +} +.ui-dialog .ui-resizable-nw { + left: 0; + top: 0; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,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"); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-text { + display: block; + margin-right: 20px; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-selectmenu-button.ui-button { + text-align: left; + white-space: nowrap; + width: 14em; +} +.ui-selectmenu-icon.ui-icon { + float: right; + margin-top: 0; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: .222em 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 2em; +} +.ui-spinner-button { + width: 1.6em; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top-style: none; + border-bottom-style: none; + border-right-style: none; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: inherit; + font-size: 1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget.ui-widget-content { + border: 1px solid #c5c5c5; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #dddddd; + background: #e9e9e9; + color: #333333; + font-weight: bold; +} +.ui-widget-header a { + color: #333333; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default, +.ui-button, + +/* We use html here because we need a greater specificity to make sure disabled +works properly when clicked or hovered */ +html .ui-button.ui-state-disabled:hover, +html .ui-button.ui-state-disabled:active { + border: 1px solid lightgray; + background: white; + font-weight: normal; + color: #454545; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited, +a.ui-button, +a:link.ui-button, +a:visited.ui-button, +.ui-button { + color: #454545; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus, +.ui-button:hover, +.ui-button:focus { + border: 1px solid #cccccc; + background: #ededed; + font-weight: normal; + color: #2b2b2b; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited, +a.ui-button:hover, +a.ui-button:focus { + color: #2b2b2b; + text-decoration: none; +} + +.ui-checkboxradio-label { + border: none !important; + background: none; +} + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + border: 1px solid #e67e22; + background: #e67e22; + font-weight: normal; + color: #ffffff; +} +.ui-icon-background, +.ui-state-active .ui-icon-background { + border: solid 1px #f39c12; + background-color: #ffffff; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #ffffff; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #dad55e; + background: #fffa90; + color: #777620; +} +.ui-state-checked { + border: 1px solid #dad55e; + background: #fffa90; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #777620; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #f1a899; + background: #fddfdf; + color: #5f3f3f; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #5f3f3f; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #5f3f3f; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("images/ui-icons_555555_256x240.png"); +} +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("images/ui-icons_777620_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_cc0000_256x240.png"); +} +.ui-button .ui-icon { + background-image: url("images/ui-icons_777777_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-caret-1-n { background-position: 0 0; } +.ui-icon-caret-1-ne { background-position: -16px 0; } +.ui-icon-caret-1-e { background-position: -32px 0; } +.ui-icon-caret-1-se { background-position: -48px 0; } +.ui-icon-caret-1-s { background-position: -65px 0; } +.ui-icon-caret-1-sw { background-position: -80px 0; } +.ui-icon-caret-1-w { background-position: -96px 0; } +.ui-icon-caret-1-nw { background-position: -112px 0; } +.ui-icon-caret-2-n-s { background-position: -128px 0; } +.ui-icon-caret-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -65px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -65px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 1px -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 3px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa; + opacity: .003; + filter: Alpha(Opacity=.3); /* support: IE8 */ +} +.ui-widget-shadow { + -webkit-box-shadow: 0px 0px 5px #666666; + box-shadow: 0px 0px 5px #666666; +} diff --git a/build/lib/gradio/static/css/vendor/jsonTree.css b/build/lib/gradio/static/css/vendor/jsonTree.css new file mode 100644 index 0000000000..4e1a6575f7 --- /dev/null +++ b/build/lib/gradio/static/css/vendor/jsonTree.css @@ -0,0 +1,115 @@ +/* + * JSON Tree Viewer + * http://github.com/summerstyle/jsonTreeViewer + * + * Copyright 2017 Vera Lobacheva (http://iamvera.com) + * Released under the MIT license (LICENSE.txt) + */ + +/* Background for the tree. May use for element */ +.jsontree_bg { + background: #FFF; +} + +/* Styles for the container of the tree (e.g. fonts, margins etc.) */ +.jsontree_tree { + font-family: 'PT Mono', monospace; + font-size: 14px; + padding-left: 0; +} + +.jsontree_tree ul { + padding-left: 20px; +} + +.jsontree_tree li { + list-style: none; +} + + +/* Styles for a list of child nodes */ +.jsontree_child-nodes { + display: none; + margin-bottom: 5px; + line-height: 2; +} +.jsontree_node_expanded > .jsontree_value-wrapper > .jsontree_value > .jsontree_child-nodes { + display: block; +} + +/* Styles for labels */ +.jsontree_label-wrapper { + float: left; + margin-right: 8px; +} +.jsontree_label { + font-weight: normal; + vertical-align: top; + color: #000; + position: relative; + padding: 1px; + border-radius: 4px; + cursor: default; +} +.jsontree_node_marked > .jsontree_label-wrapper > .jsontree_label { + background: #fff2aa; +} + +/* Styles for values */ +.jsontree_value-wrapper { + display: block; + overflow: hidden; +} +.jsontree_node_complex > .jsontree_value-wrapper { + overflow: inherit; +} +.jsontree_value { + vertical-align: top; + display: inline; +} +.jsontree_value_null { + color: #777; + font-weight: bold; +} +.jsontree_value_string { + color: #025900; + font-weight: bold; +} +.jsontree_value_number { + color: #000E59; + font-weight: bold; +} +.jsontree_value_boolean { + color: #600100; + font-weight: bold; +} + +/* Styles for active elements */ +.jsontree_expand-button { + position: absolute; + top: 3px; + left: -15px; + display: block; + width: 11px; + height: 11px; + background-image: url('icons.svg'); +} +.jsontree_node_expanded > .jsontree_label-wrapper > .jsontree_label > .jsontree_expand-button { + background-position: 0 -11px; +} +.jsontree_show-more { + cursor: pointer; +} +.jsontree_node_expanded > .jsontree_value-wrapper > .jsontree_value > .jsontree_show-more { + display: none; +} +.jsontree_node_empty > .jsontree_label-wrapper > .jsontree_label > .jsontree_expand-button, +.jsontree_node_empty > .jsontree_value-wrapper > .jsontree_value > .jsontree_show-more { + display: none !important; +} +.jsontree_node_complex > .jsontree_label-wrapper > .jsontree_label { + cursor: pointer; +} +.jsontree_node_empty > .jsontree_label-wrapper > .jsontree_label { + cursor: default !important; +} diff --git a/gradio.egg-info/PKG-INFO b/gradio.egg-info/PKG-INFO index a240ec25d8..a044f2900d 100644 --- a/gradio.egg-info/PKG-INFO +++ b/gradio.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: gradio -Version: 1.1.8.1 +Version: 1.1.9 Summary: Python library for easily interacting with trained machine learning models Home-page: https://github.com/gradio-app/gradio-UI Author: Abubakar Abid